QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
REllipseData.h
Go to the documentation of this file.
1
20#ifndef RELLIPSEDATA_H
21#define RELLIPSEDATA_H
22
23#include "entity_global.h"
24
25#include "RBox.h"
26#include "REntityData.h"
27#include "RVector.h"
28#include "REllipse.h"
29
30class RDocument;
31class RLine;
32class RRefPoint;
33class RPolyline;
34
44
45 friend class REllipseEntity;
46
47protected:
48 REllipseData(RDocument* document, const REllipseData& data);
49
50public:
52 REllipseData(const REllipse& ellipse);
54 const RVector& center,
55 const RVector& majorPoint,
56 double ratio,
57 double startParam, double endParam,
58 bool reversed = false);
59
60 virtual RS::EntityType getType() const {
61 return RS::EntityEllipse;
62 }
64 return *this;
65 }
66
67 bool isValid() const {
68 return REllipse::isValid();
69 }
70 virtual QList<RVector> getEndPoints(const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
71 return REntityData::getEndPoints(queryBox, subEntityIds);
72 }
73 virtual void setZ(double z) {
75 }
76 virtual void to2D() {
78 }
79 virtual RBox getBoundingBox(bool ignoreEmpty=false) const {
81 }
82 virtual QList<RVector> getMiddlePoints(const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
83 return REntityData::getMiddlePoints(queryBox, subEntityIds);
84 }
85 virtual QList<RVector> getCenterPoints(const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
86 return REntityData::getCenterPoints(queryBox, subEntityIds);
87 }
88 virtual QList<RVector> getArcReferencePoints(const RBox& queryBox = RDEFAULT_RBOX) const {
90 }
91 virtual QList<RVector> getPointsWithDistanceToEnd(double distance, int from = RS::FromAny, const RBox& queryBox = RDEFAULT_RBOX, QList<RObject::Id>* subEntityIds = NULL) const {
92 return REntityData::getPointsWithDistanceToEnd(distance, from, queryBox, subEntityIds);
93 }
94 virtual QList<RVector> getIntersectionPoints(const REntityData& other, bool limited = true, bool same = false, const RBox& queryBox = RDEFAULT_RBOX, bool ignoreComplex = true, QList<QPair<RObject::Id, RObject::Id> >* entityIds = NULL) const {
95 return REntityData::getIntersectionPoints(other, limited, same, queryBox, ignoreComplex, entityIds);
96 }
97 virtual QList<RVector> getIntersectionPoints(const RShape& shape, bool limited = true, const RBox& queryBox = RDEFAULT_RBOX, bool ignoreComplex = true) const {
98 return REntityData::getIntersectionPoints(shape, limited, queryBox, ignoreComplex);
99 }
100 virtual RVector getVectorTo(const RVector& point, bool limited=true, double strictRange = RMAXDOUBLE) const {
101 return REntityData::getVectorTo(point, limited, strictRange);
102 }
103 virtual double getDistanceTo(const RVector& point, bool limited = true, double range = 0.0, bool draft = false, double strictRange = RMAXDOUBLE) const {
104 return REntityData::getDistanceTo(point, limited, range, draft, strictRange);
105 }
106 virtual bool intersectsWith(const RShape& shape) const {
107 return REntityData::intersectsWith(shape);
108 }
109 virtual bool move(const RVector& offset) {
110 return REllipse::move(offset);
111 }
112 virtual bool rotate(double rotation, const RVector& center = RDEFAULT_RVECTOR) {
113 return REllipse::rotate(rotation, center);
114 }
115 virtual bool scale(const RVector& scaleFactors, const RVector& center = RDEFAULT_RVECTOR) {
116 return REllipse::scale(scaleFactors, center);
117 }
118 virtual bool mirror(const RLine& axis) {
119 return REllipse::mirror(axis);
120 }
121 virtual bool mirror(const RVector& axis1, const RVector& axis2) {
122 return REntityData::mirror(axis1, axis2);
123 }
124 virtual bool flipHorizontal() {
126 }
127 virtual bool flipVertical() {
129 }
130 virtual bool stretch(const RPolyline& area, const RVector& offset) {
131 return REllipse::stretch(area, offset);
132 }
133
134 QList<RVector> getFoci() const {
135 return REllipse::getFoci();
136 }
138 return REllipse::getCenter();
139 }
140 double getMajorRadius() const {
142 }
145 }
148 }
149 void setMinorPoint(const RVector& p) {
151 }
152 double getRatio() const {
153 return REllipse::getRatio();
154 }
155 double getAngle() const {
156 return REllipse::getAngle();
157 }
158 double getStartParam() const {
160 }
161 double getEndParam() const {
162 return REllipse::getEndParam();
163 }
164 bool isFullEllipse() const {
166 }
167
168 double getParamTo(const RVector& pos) {
169 return REllipse::getParamTo(pos);
170 }
171
172 double getLength() const {
173 return REllipse::getLength();
174 }
175
176 double getSweep() const {
177 return REllipse::getSweep();
178 }
179
180 RVector getPointAt(double angle) const {
181 return REllipse::getPointAt(angle);
182 }
183
184 virtual QList<RRefPoint> getReferencePoints(RS::ProjectionRenderingHint hint = RS::RenderTop) const;
185
186 virtual bool moveReferencePoint(const RVector& referencePoint, const RVector& targetPoint, Qt::KeyboardModifiers modifiers = Qt::NoModifier);
187
188 virtual bool reverse() {
189 return REllipse::reverse();
190 }
191
192 virtual RShape* castToShape() {
193 return this;
194 }
195
196 virtual QList<QSharedPointer<RShape> > getShapes(const RBox& queryBox = RDEFAULT_RBOX, bool ignoreComplex = false, bool segment = false, QList<RObject::Id>* entityIds = NULL) const {
197 Q_UNUSED(queryBox)
198 Q_UNUSED(ignoreComplex)
199 Q_UNUSED(segment)
200
201 return QList<QSharedPointer<RShape> >() <<
202 QSharedPointer<RShape>(new REllipse(*this));
203 }
204};
205
209Q_DECLARE_METATYPE(QSharedPointer<REllipseData>)
210
211#endif
#define RDEFAULT_RBOX
Definition RBox.h:35
Q_DECLARE_METATYPE(RMath *)
#define RMAXDOUBLE
Definition RMath.h:66
#define RDEFAULT_RVECTOR
Definition RVector.h:38
Represents a box e.g.
Definition RBox.h:46
A graphics document contains and owns entities, layers, user coordinate systems, variables,...
Definition RDocument.h:78
Stores and manages all data that defines the geometry and appearance of an ellipse entity.
Definition REllipseData.h:43
virtual void setZ(double z)
Definition REllipseData.h:73
virtual QList< RVector > getIntersectionPoints(const REntityData &other, bool limited=true, bool same=false, const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=true, QList< QPair< RObject::Id, RObject::Id > > *entityIds=NULL) const
Definition REllipseData.h:94
virtual bool flipVertical()
Definition REllipseData.h:127
bool isValid() const
Definition REllipseData.h:67
virtual RS::EntityType getType() const
Definition REllipseData.h:60
RVector getPointAt(double angle) const
Definition REllipseData.h:180
virtual QList< RVector > getEndPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REllipseData.h:70
RVector getMinorPoint() const
Definition REllipseData.h:146
REllipse getEllipse()
Definition REllipseData.h:63
virtual bool rotate(double rotation, const RVector &center=RDEFAULT_RVECTOR)
Definition REllipseData.h:112
RVector getCenter() const
Definition REllipseData.h:137
double getParamTo(const RVector &pos)
Definition REllipseData.h:168
virtual QList< QSharedPointer< RShape > > getShapes(const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=false, bool segment=false, QList< RObject::Id > *entityIds=NULL) const
Definition REllipseData.h:196
void setMinorPoint(const RVector &p)
Definition REllipseData.h:149
virtual bool reverse()
Definition REllipseData.h:188
bool isFullEllipse() const
Definition REllipseData.h:164
virtual QList< RVector > getArcReferencePoints(const RBox &queryBox=RDEFAULT_RBOX) const
Definition REllipseData.h:88
virtual QList< RVector > getIntersectionPoints(const RShape &shape, bool limited=true, const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=true) const
Definition REllipseData.h:97
double getLength() const
Definition REllipseData.h:172
virtual RBox getBoundingBox(bool ignoreEmpty=false) const
Definition REllipseData.h:79
double getRatio() const
Definition REllipseData.h:152
QList< RVector > getFoci() const
Definition REllipseData.h:134
virtual bool scale(const RVector &scaleFactors, const RVector &center=RDEFAULT_RVECTOR)
Definition REllipseData.h:115
virtual double getDistanceTo(const RVector &point, bool limited=true, double range=0.0, bool draft=false, double strictRange=RMAXDOUBLE) const
Definition REllipseData.h:103
double getStartParam() const
Definition REllipseData.h:158
virtual bool mirror(const RVector &axis1, const RVector &axis2)
Definition REllipseData.h:121
virtual RVector getVectorTo(const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const
Definition REllipseData.h:100
virtual bool mirror(const RLine &axis)
Definition REllipseData.h:118
virtual bool intersectsWith(const RShape &shape) const
Definition REllipseData.h:106
virtual QList< RVector > getCenterPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REllipseData.h:85
virtual RShape * castToShape()
Definition REllipseData.h:192
double getAngle() const
Definition REllipseData.h:155
virtual QList< RVector > getMiddlePoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REllipseData.h:82
virtual bool move(const RVector &offset)
Moves this entity by the given offset.
Definition REllipseData.h:109
virtual void to2D()
Definition REllipseData.h:76
virtual bool flipHorizontal()
Definition REllipseData.h:124
virtual QList< RVector > getPointsWithDistanceToEnd(double distance, int from=RS::FromAny, const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REllipseData.h:91
double getEndParam() const
Definition REllipseData.h:161
RVector getMajorPoint() const
Definition REllipseData.h:143
double getSweep() const
Definition REllipseData.h:176
virtual bool stretch(const RPolyline &area, const RVector &offset)
Stretches the end points of this entity that are inside area by offset.
Definition REllipseData.h:130
double getMajorRadius() const
Definition REllipseData.h:140
Ellipse entity.
Definition REllipseEntity.h:38
Low-level mathematical representation of an ellipse or ellipse arc.
Definition REllipse.h:43
RVector getCenter() const
Definition REllipse.cpp:266
QList< RVector > getFoci() const
Definition REllipse.cpp:88
virtual bool move(const RVector &offset)
Definition REllipse.cpp:896
RVector getMajorPoint() const
Definition REllipse.cpp:277
virtual bool scale(const RVector &scaleFactors, const RVector &center=RDEFAULT_RVECTOR)
Definition REllipse.cpp:927
RVector getMinorPoint() const
Definition REllipse.cpp:292
double getRatio() const
Definition REllipse.cpp:322
REllipse()
Creates an ellipse shape with invalid.
Definition REllipse.cpp:33
virtual bool isValid() const
Definition REllipse.cpp:84
virtual void setZ(double z)
Definition REllipse.cpp:93
virtual bool rotate(double rotation, const RVector &center=RDEFAULT_RVECTOR)
Definition REllipse.cpp:904
double getParamTo(const RVector &pos) const
Definition REllipse.cpp:215
double getMajorRadius() const
Definition REllipse.cpp:474
double getStartParam() const
Definition REllipse.cpp:335
virtual bool reverse()
Definition REllipse.cpp:988
double getAngle() const
Definition REllipse.cpp:488
double getLength() const
Definition REllipse.cpp:516
virtual bool mirror(const RLine &axis)
Definition REllipse.cpp:965
double getSweep() const
Definition REllipse.cpp:1060
RVector getPointAt(double param) const
Definition REllipse.cpp:235
double getEndParam() const
Definition REllipse.cpp:347
void setMinorPoint(const RVector &p)
Sets the minor point relative to the center point.
Definition REllipse.cpp:302
bool isFullEllipse() const
Definition REllipse.cpp:499
Base class for all entity data classes.
Definition REntityData.h:65
virtual QList< RVector > getCenterPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REntityData.cpp:443
virtual QList< RVector > getMiddlePoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REntityData.cpp:413
virtual bool flipHorizontal()
Definition REntityData.cpp:729
virtual double getDistanceTo(const RVector &point, bool limited=true, double range=0.0, bool draft=false, double strictRange=RMAXDOUBLE) const
Definition REntityData.cpp:299
virtual QList< RVector > getIntersectionPoints(const REntityData &other, bool limited=true, bool same=false, const RBox &queryBox=RDEFAULT_RBOX, bool ignoreComplex=true, QList< QPair< RObject::Id, RObject::Id > > *entityIds=NULL) const
Definition REntityData.cpp:601
virtual bool moveReferencePoint(const RVector &referencePoint, const RVector &targetPoint, Qt::KeyboardModifiers modifiers=Qt::NoModifier)=0
Moves the given reference point to the given target point or does nothing if this entity has no refer...
virtual bool intersectsWith(const RShape &shape) const
Definition REntityData.cpp:582
virtual QList< RVector > getPointsWithDistanceToEnd(double distance, int from=RS::FromAny, const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REntityData.cpp:487
virtual bool flipVertical()
Definition REntityData.cpp:733
virtual bool mirror(const RLine &axis)
Definition REntityData.cpp:715
virtual QList< RVector > getArcReferencePoints(const RBox &queryBox=RDEFAULT_RBOX) const
Definition REntityData.cpp:474
virtual QList< RRefPoint > getReferencePoints(RS::ProjectionRenderingHint hint=RS::RenderTop) const =0
virtual RBox getBoundingBox(bool ignoreEmpty=false) const
Definition REntityData.cpp:313
virtual QList< RVector > getEndPoints(const RBox &queryBox=RDEFAULT_RBOX, QList< RObject::Id > *subEntityIds=NULL) const
Definition REntityData.cpp:383
virtual RVector getVectorTo(const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const
Definition REntityData.cpp:551
Low-level mathematical representation of a line.
Definition RLine.h:41
Low-level mathematical representation of an open polyline or closed polyline (= polygon).
Definition RPolyline.h:50
Represents a reference point of an entity.
Definition RRefPoint.h:18
@ FromAny
Start or end.
Definition RS.h:374
EntityType
Entity types used for property handling / filtering.
Definition RS.h:227
@ EntityEllipse
Ellipse.
Definition RS.h:255
ProjectionRenderingHint
Sets the current rendering hint for exports.
Definition RS.h:293
@ RenderTop
Definition RS.h:294
Interface for geometrical shape classes.
Definition RShape.h:72
virtual bool stretch(const RBox &area, const RVector &offset)
Definition RShape.cpp:1741
virtual void to2D()
Flattens this shape to the X/Y plane.
Definition RShape.h:158
Represents a 3d vector (x/y/z).
Definition RVector.h:47
#define QCADENTITY_EXPORT
Definition entity_global.h:10
#define NULL
Definition opennurbs_system.h:256