45 RArc(
double cx,
double cy,
double radius,
double startAngle,
46 double endAngle,
bool reversed =
false);
47 RArc(
const RVector& center,
double radius,
double startAngle,
48 double endAngle,
bool reversed =
false);
54 virtual QSharedPointer<RShape>
clone()
const {
55 return QSharedPointer<RShape>(
new RArc(*
this));
59 return QSharedPointer<RArc>(
new RArc(*
this));
66 virtual void setZ(
double z);
75 static RArc createFrom3Points(
const RVector& startPoint,
78 static RArc createFrom2PBulge(
const RVector& startPoint,
81 static RArc createTangential(
const RVector& startPoint,
86 static QList<RArc> createBiarc(
const RVector& startPoint,
double startDirection,
87 const RVector& endPoint,
double endDirection,
bool secondTry =
false);
97 virtual QList<RVector>
getPointCloud(
double segmentLength)
const;
100 bool limited =
true,
double strictRange =
RMAXDOUBLE)
const;
103 void setCenter(
const RVector& vector);
104 double getRadius()
const;
105 void setRadius(
double radius);
106 double getStartAngle()
const;
107 void setStartAngle(
double startAngle);
108 double getEndAngle()
const;
109 void setEndAngle(
double endAngle);
110 bool isReversed()
const;
111 void setReversed(
bool reversed);
112 double getAngleLength(
bool allowForZeroLength =
false)
const;
117 double getDiameter()
const;
118 void setDiameter(
double d);
119 void setLength(
double l);
120 double getArea()
const;
121 void setArea(
double a);
122 double getChordArea()
const;
129 double getSweep()
const;
130 void setSweep(
double s);
135 RVector getPointAtAngle(
double a)
const;
139 void moveStartPoint(
const RVector& pos,
bool keepRadius =
true);
140 void moveEndPoint(
const RVector& pos,
bool keepRadius =
true);
141 void moveMiddlePoint(
const RVector& pos);
142 double getBulge()
const;
151 virtual QSharedPointer<RShape>
getTransformed(
const QTransform& transform)
const;
164 RPolyline approximateWithLines(
double segmentLength,
double angle = 0.0)
const;
165 RPolyline approximateWithLinesTan(
double segmentLength,
double angle = 0.0)
const;
167 QList<RLine> getTangents(
const RVector& point)
const;
173 virtual QList<QSharedPointer<RShape> >
splitAt(
const QList<RVector>& points)
const;
175 QList<RArc> splitAtQuadrantLines()
const;
178 return arcProxy!=
NULL;
185 if (arcProxy!=
NULL) {
198#if QT_VERSION >= 0x060000
209 virtual void print(QDebug dbg)
const;
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
virtual QSharedPointer< RShape > clone() const
Definition RArc.h:54
double radius
Getter function for this property: getRadius Setter function for this property: setRadius
Definition RArc.h:224
bool reversed
Getter function for this property: isReversed Setter function for this property: setReversed
Definition RArc.h:239
virtual bool trimStartPoint(double trimDist)
Definition RArc.h:156
QSharedPointer< RArc > cloneToArc() const
Definition RArc.h:58
virtual bool isDirected() const
Definition RArc.h:62
bool isAngleWithinArc(double a) const
Definition RArc.h:113
virtual QList< QSharedPointer< RShape > > getOffsetShapes(double distance, int number, RS::Side side, const RVector &position=RVector::invalid)
Definition RArc.h:169
static void setArcProxy(RArcProxy *p)
Definition RArc.h:184
double startAngle
Getter function for this property: getStartAngle Setter function for this property: setStartAngle
Definition RArc.h:229
RVector center
Getter function for this property: getCenter Setter function for this property: setCenter
Definition RArc.h:219
static RArcProxy * getArcProxy()
Definition RArc.h:194
static bool hasProxy()
Definition RArc.h:177
virtual bool trimEndPoint(double trimDist)
Definition RArc.h:159
double endAngle
Getter function for this property: getEndAngle Setter function for this property: setEndAngle
Definition RArc.h:234
static RArcProxy * arcProxy
Copyright (c) 2011-2018 by Andrew Mustun.
Definition RArc.h:212
virtual RShape::Type getShapeType() const
Definition RArc.h:50
Proxy for advanced arc functionality.
Definition RArcProxy.h:37
Represents a box e.g.
Definition RBox.h:46
Low-level mathematical representation of a line.
Definition RLine.h:41
static bool isAngleBetween(double a, double a1, double a2, bool reversed)
Tests if angle a is between a1 and a2.
Definition RMath.cpp:683
Low-level mathematical representation of an open polyline or closed polyline (= polygon).
Definition RPolyline.h:50
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
static const double AngleTolerance
Definition RS.h:921
Side
Side used for side of a point relative to an entity (right hand or left hand side)
Definition RS.h:313
Ending
Entity ending.
Definition RS.h:323
Interface for geometrical shape classes.
Definition RShape.h:72
virtual bool isValid() const
Definition RShape.h:92
virtual double getDistanceFromStart(const RVector &p) const
Definition RShape.h:356
virtual RVector getVectorTo(const RVector &point, bool limited=true, double strictRange=RMAXDOUBLE) const =0
virtual QList< RVector > getPointCloud(double segmentLength) const =0
virtual bool trimStartPoint(const RVector &trimPoint, const RVector &clickPoint=RVector::invalid, bool extend=false)
Definition RShape.h:309
virtual RVector getStartPoint() const
Definition RShape.h:289
virtual bool stretch(const RBox &area, const RVector &offset)
Definition RShape.cpp:1741
virtual QList< RVector > getArcReferencePoints() const
Definition RShape.h:216
virtual QList< RVector > getPointsWithDistanceToEnd(double distance, int from=RS::FromAny) const =0
virtual RVector getEndPoint() const
Definition RShape.h:292
virtual bool trimEndPoint(const RVector &trimPoint, const RVector &clickPoint=RVector::invalid, bool extend=false)
Definition RShape.h:328
Type
Definition RShape.h:74
@ Arc
Definition RShape.h:78
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 ¢er=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 double getDirection1() const
Definition RShape.h:277
virtual QList< RVector > getEndPoints() const =0
virtual RVector getMiddlePoint() const
Definition RShape.h:295
virtual double getDirection2() const
Definition RShape.h:280
virtual RS::Side getSideOfPoint(const RVector &point) const
Definition RShape.h:284
virtual QList< RVector > getVectorProperties() const
Definition RShape.h:170
virtual QList< RVector > getMiddlePoints() const =0
virtual bool reverse()
Definition RShape.h:299
virtual void setZ(double z)=0
virtual QSharedPointer< RShape > getTransformed(const QTransform &transform) const =0
virtual RBox getBoundingBox() const =0
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 RS::Ending getTrimEnd(const RVector &trimPoint, const RVector &clickPoint)
Definition RShape.h:345
virtual bool scale(double scaleFactor, const RVector ¢er=RVector())
Definition RShape.cpp:1756
virtual QList< bool > getBoolProperties() const
Definition RShape.h:173
virtual double getLength() const =0
Represents a 3d vector (x/y/z).
Definition RVector.h:47
static const RVector invalid
invalid vector
Definition RVector.h:335
#define QCADCORE_EXPORT
Definition core_global.h:10
char s
Definition opennurbs_string.cpp:32
#define NULL
Definition opennurbs_system.h:256