QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
RCircle.h
Go to the documentation of this file.
1
20#ifndef RCIRCLE_H
21#define RCIRCLE_H
22
23#include "../core_global.h"
24
25#include "RArc.h"
26#include "RShape.h"
27#include "RVector.h"
28
29class RBox;
30class RLine;
31
42public:
43 RCircle();
44 RCircle(double cx, double cy, const double radius);
45 RCircle(const RVector& center, const double radius);
46 virtual ~RCircle();
47
48 virtual RShape::Type getShapeType() const {
49 return Circle;
50 }
51
52 virtual QSharedPointer<RShape> clone() const {
53 return QSharedPointer<RShape>(new RCircle(*this));
54 }
55
56 QSharedPointer<RCircle> cloneToCircle() const {
57 return QSharedPointer<RCircle>(new RCircle(*this));
58 }
59
60 static RCircle createFrom2Points(const RVector& p1, const RVector& p2);
61 static RCircle createFrom3Points(const RVector& p1, const RVector& p2, const RVector& p3);
62
63 RArc toArc(double startAngle=0.0) const;
64
65 virtual bool isValid() const {
66 return center.isValid();
67 }
68
69 virtual void setZ(double z);
70
71 virtual QList<RVector> getVectorProperties() const;
72 virtual QList<double> getDoubleProperties() const;
73
74 virtual RBox getBoundingBox() const;
75 virtual double getLength() const;
76
77 virtual QList<RVector> getEndPoints() const;
78 virtual QList<RVector> getMiddlePoints() const;
79 virtual QList<RVector> getCenterPoints() const;
80 virtual QList<RVector> getArcReferencePoints() const;
81 virtual QList<RVector> getPointsWithDistanceToEnd(
82 double distance, int from = RS::FromAny) const;
83 virtual QList<RVector> getPointCloud(double segmentLength) const;
84
85 virtual double getAngleAt(double distance, RS::From from = RS::FromStart) const;
86 RVector getPointAtAngle(double a) const;
87
88 virtual RVector getVectorTo(const RVector& point,
89 bool limited = true, double strictRange = RMAXDOUBLE) const;
90
92
93 RVector getCenter() const;
94 void setCenter(const RVector& vector);
95 double getRadius() const;
96 void setRadius(double radius);
97
98 double getDiameter() const;
99 void setDiameter(double d);
100 double getCircumference() const;
101 void setCircumference(double c);
102 double getArea() const;
103 void setArea(double a);
104
105 bool contains(const RVector& p) const;
106 //bool touchesCircleInternally(const RCircle& other) const;
107
108 virtual bool move(const RVector& offset);
109 virtual bool rotate(double rotation, const RVector& center = RDEFAULT_RVECTOR);
110 virtual bool scale(const RVector& scaleFactors, const RVector& center = RDEFAULT_RVECTOR);
111 virtual bool mirror(const RLine& axis);
112 virtual bool flipHorizontal();
113 virtual bool flipVertical();
114
115 virtual QSharedPointer<RShape> getTransformed(const QTransform& transform) const;
116
117 QList<RLine> getTangents(const RVector& point) const;
118
119 virtual QList<QSharedPointer<RShape> > getOffsetShapes(double distance, int number, RS::Side side, const RVector& position = RVector::invalid) {
120 return RShape::getOffsetArcs(*this, distance, number, side, position);
121 }
122
123 virtual QList<QSharedPointer<RShape> > splitAt(const QList<RVector>& points) const;
124
125#if QT_VERSION >= 0x060000
130 RCircle copy() const {
131 return *this;
132 }
133#endif
134
135protected:
136 virtual void print(QDebug dbg) const;
137
138public:
148 double radius;
149};
150
154Q_DECLARE_METATYPE(QSharedPointer<RCircle>)
155Q_DECLARE_METATYPE(QSharedPointer<RCircle>*)
156
157#endif
Q_DECLARE_METATYPE(RMath *)
#define RMAXDOUBLE
Definition RMath.h:66
#define RDEFAULT_RVECTOR
Definition RVector.h:38
Low-level mathematical representation of an arc.
Definition RArc.h:42
Represents a box e.g.
Definition RBox.h:46
Low-level mathematical representation of a circle.
Definition RCircle.h:41
virtual RShape::Type getShapeType() const
Definition RCircle.h:48
virtual QSharedPointer< RShape > clone() const
Definition RCircle.h:52
QSharedPointer< RCircle > cloneToCircle() const
Definition RCircle.h:56
double radius
Getter function for this property: getRadius Setter function for this property: setRadius
Definition RCircle.h:148
virtual QList< QSharedPointer< RShape > > getOffsetShapes(double distance, int number, RS::Side side, const RVector &position=RVector::invalid)
Definition RCircle.h:119
virtual bool isValid() const
Definition RCircle.h:65
RVector center
Getter function for this property: getCenter Setter function for this property: setCenter
Definition RCircle.h:143
Low-level mathematical representation of a line.
Definition RLine.h:41
From
End used to specify from which end of a shape to measure a distance.
Definition RS.h:371
@ FromStart
Definition RS.h:372
@ FromAny
Start or end.
Definition RS.h:374
Side
Side used for side of a point relative to an entity (right hand or left hand side)
Definition RS.h:313
Interface for geometrical shape classes.
Definition RShape.h:72
virtual RVector getVectorTo(const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const =0
virtual QList< RVector > getPointCloud(double segmentLength) const =0
virtual QList< RVector > getArcReferencePoints() const
Definition RShape.h:216
virtual QList< RVector > getPointsWithDistanceToEnd(double distance, int from=RS::FromAny) const =0
Type
Definition RShape.h:74
@ Circle
Definition RShape.h:79
virtual QList< RVector > getCenterPoints() const =0
virtual bool move(const RVector &offset)=0
virtual QList< double > getDoubleProperties() const
Definition RShape.h:172
virtual double getAngleAt(double distance, RS::From from=RS::FromStart) const
Definition RShape.h:249
virtual bool rotate(double rotation, const RVector &center=RDEFAULT_RVECTOR)=0
virtual void print(QDebug dbg) const
Definition RShape.cpp:1760
virtual QList< QSharedPointer< RShape > > splitAt(const QList< RVector > &points) const
Definition RShape.cpp:2234
virtual bool mirror(const RLine &axis)=0
virtual QList< RVector > getEndPoints() const =0
virtual QList< RVector > getVectorProperties() const
Definition RShape.h:170
virtual QList< RVector > getMiddlePoints() const =0
virtual bool flipHorizontal()
Definition RShape.cpp:1733
virtual RVector getPointOnShape() const
Definition RShape.cpp:174
virtual void setZ(double z)=0
virtual QSharedPointer< RShape > getTransformed(const QTransform &transform) const =0
virtual RBox getBoundingBox() const =0
virtual bool flipVertical()
Definition RShape.cpp:1737
static QList< QSharedPointer< RShape > > getOffsetArcs(const RShape &shape, double distance, int number, RS::Side side, const RVector &position=RVector::invalid)
Definition RShape.cpp:2114
virtual bool scale(double scaleFactor, const RVector &center=RVector())
Definition RShape.cpp:1756
virtual double getLength() const =0
Represents a 3d vector (x/y/z).
Definition RVector.h:47
bool isValid() const
Definition RVector.cpp:64
static const RVector invalid
invalid vector
Definition RVector.h:335
#define QCADCORE_EXPORT
Definition core_global.h:10