56 bool bAnglesAreGivenCounterClockwise);
60 const IAngle& rEndAngle,
bool bAnglesAreGivenCounterClockwise);
69 static bool createFrom3Points(
const IVector2D& rVecStartPoint,
75 static bool createFrom2PointsRadiusAndFlags(
const IVector2D& rVecStartPoint,
77 const Float& rfRadius,
78 bool bPointsAreGivenCounterClockwise,
79 bool bShorterArc,
IArc2D& rArc,
80 const Float& rfTangentTolerance =
84 static bool createFrom2PointsAndCenter(
const IVector2D& rVecStartPoint,
87 bool bPointsAreGivenCounterClockwise,
89 const Float& rfTangentTolerance =
105 virtual inline const IVector2D& MQUALIFIER
getCenter()
const {
return getCircleConst().getCenter(); }
106 virtual inline void MQUALIFIER
setCenter(
const IVector2D& rVecCenter) { getCircle().setCenter(rVecCenter); }
108 virtual inline const Float& MQUALIFIER
getRadius()
const {
return getCircleConst().getRadius(); }
109 virtual inline void MQUALIFIER
setRadius(
const Float& rfRadius) { getCircle().setRadius(rfRadius); }
113 virtual void MQUALIFIER setStartAngle(
const IAngle& rStartAngle);
114 virtual void MQUALIFIER setEndAngle (
const IAngle& rEndAngle);
116 virtual void MQUALIFIER setAngles(
const IAngle& rStartAngle,
const IAngle& rEndAngle,
117 bool bAnglesAreGivenCounterClockwise);
119 virtual void MQUALIFIER switchAngles();
121 virtual void MQUALIFIER getStartPoint(
IVector2D& rVecStart)
const;
122 virtual void MQUALIFIER getEndPoint(
IVector2D& rVecEnd)
const;
123 virtual void MQUALIFIER createSupplementArc(
IArc2D& rSupplementArc)
const;
124 virtual bool MQUALIFIER isShorterThanSupplementArc()
const;
126 virtual inline void MQUALIFIER
assign(
const IArc2D& rArc) { *
this = rArc; }
128 virtual inline bool MQUALIFIER
isEqual(
const IArc2D& rArc)
const {
return *
this == rArc; }
130 virtual bool MQUALIFIER containsAngle(
const IAngle& rAngle,
131 bool bIncludeStartAndEndPoints =
true)
const;
133 virtual bool MQUALIFIER containsPoint2(
const IVector2D& rVecPoint,
134 bool bIncludeStartAndEndPoints =
true,
135 const Float& rfTolerance = 0)
const;
137 virtual void MQUALIFIER moveStartPointOnCircle(
const Float& rfDistance,
bool bCounterClockwise);
138 virtual void MQUALIFIER moveEndPointOnCircle(
const Float& rfDistance,
bool bCounterClockwise);
144 static Retval calcArcsTangentTo2StraightLines(
const IStraightLine2D& rStraightLine1,
146 const Float& rfRadius,
147 IList<IArc2D>& rLstTangentArcs,
148 const Float& rfTangentTolerance =
152 static Retval calcArcsTangentToStraightLineAndCircle(
const IStraightLine2D& rStraightLine,
154 const Float& rfRadius,
155 IList<IArc2D>& rLstTangentArcs,
156 const Float& rfTangentTolerance =
160 static Retval calcArcsTangentTo2Circles(
const ICircle2D& rCircle1,
162 const Float& rfRadius,
163 IList<IArc2D>& rLstTangentArcs,
164 const Float& rfTangentTolerance =
168 static Retval calcArcsTangentTo2LineSegments(
const ILineSegment2D& rLineSegment1,
170 const Float& rfRadius,
171 IList<IArc2D>& rLstTangentArcs,
172 const Float& rfTangentTolerance =
176 static Retval calcArcsTangentToLineSegmentAndArc(
const ILineSegment2D& rLineSegment,
178 const Float& rfRadius,
179 IList<IArc2D>& rLstTangentArcs,
180 const Float& rfTangentTolerance =
184 static Retval calcArcsTangentTo2Arcs(
const IArc2D& rArc1,
const IArc2D& rArc2,
185 const Float& rfRadius,
186 IList<IArc2D>& rLstTangentArcs,
192 virtual inline const InterfaceID& MQUALIFIER
getInterfaceID()
const {
return m_InterfaceID; }
194 virtual Float MQUALIFIER getLength()
const;
196 virtual Retval MQUALIFIER getPointFromRunningParameter(
const Float& rfRunningParameter,
200 IList<IVector2D>& rLstIntersectionPoints,
204 const Float& rfTolerance = 0)
const 205 {
return containsPoint2(rVecPoint,
true, rfTolerance); }
207 virtual void MQUALIFIER calcClosestPointToPoint(
const IVector2D& rVecPoint,
210 virtual Float MQUALIFIER calcDistanceToPoint(
const IVector2D& rVecPoint)
const;
211 virtual Float MQUALIFIER calcDistanceToObject(
const IGeometricObject2D& rObject)
const;
213 virtual Retval MQUALIFIER getXMinPoint(
IVector2D& rVecPoint)
const;
214 virtual Retval MQUALIFIER getXMaxPoint(
IVector2D& rVecPoint)
const;
215 virtual Retval MQUALIFIER getYMinPoint(
IVector2D& rVecPoint)
const;
216 virtual Retval MQUALIFIER getYMaxPoint(
IVector2D& rVecPoint)
const;
218 virtual void MQUALIFIER getMinMaxCoordinates(Float& rfXMin, Float& rfXMax,
219 Float& rfYMin, Float& rfYMax)
const;
242 static void createFrom2PointsCenterAndRadius(
const IVector2D& rVecStartPoint,
245 const Float& rfRadius,
246 bool bPointsAreGivenCounterClockwise,
250 static bool transformTangentCirclesToArcs(
const IList<ICircle2D>& rLstTangentCircles,
253 IList<IArc2D>& rLstTangentArcs,
254 const Float& rfTangentTolerance =
266 static const InterfaceID m_InterfaceID;
TArc2D(const TArc2D &rArc)
Copy constructor: Constructor taking class type object.
Definition: Arc2D.h:63
virtual void MQUALIFIER assign(const IArc2D &rArc)
Definition: Arc2D.h:126
virtual void MQUALIFIER setCircle(const ICircle2D &rCircle)
Definition: Arc2D.h:103
virtual const IVector2D &MQUALIFIER getCenter() const
Definition: Arc2D.h:105
Definition: Circle2D.h:52
virtual bool MQUALIFIER containsPoint(const IVector2D &rVecPoint, const Float &rfTolerance=0) const
Definition: Arc2D.h:203
virtual ICircle2D &MQUALIFIER getCircle()
Definition: Arc2D.h:100
TArc2D(const IArc2D &rArc)
Constructor taking interface type object.
Definition: Arc2D.h:66
Definition: ICircle2D.hpp:52
Definition: IGeometricObject2D.hpp:54
#define INTERSECT_TANGENT_TOLERANCE
Definition: IGeometricObject2D.hpp:44
Definition: IStraightLine2D.hpp:51
virtual void MQUALIFIER setRadius(const Float &rfRadius)
Definition: Arc2D.h:109
virtual const IAngle &MQUALIFIER getEndAngle() const
Definition: Arc2D.h:112
virtual const Float &MQUALIFIER getRadius() const
Definition: Arc2D.h:108
bool operator!=(const IArc2D &rArc) const
Inequality with another arc?
Definition: Arc2D.h:238
virtual const InterfaceID &MQUALIFIER getInterfaceID() const
Definition: Arc2D.h:192
Definition: ILineSegment2D.hpp:51
Definition: IVector2D.hpp:47
virtual const IAngle &MQUALIFIER getStartAngle() const
Definition: Arc2D.h:111
virtual const ICircle2D &MQUALIFIER getCircleConst() const
Definition: Arc2D.h:101
virtual bool MQUALIFIER isEqual(const IArc2D &rArc) const
Definition: Arc2D.h:128
TArc2D()
Default constructor. Creates an arc of length 0 on the unit circle.
Definition: Arc2D.h:51
Definition: IArc2D.hpp:52
virtual ~TArc2D()
Definition: Arc2D.h:95
virtual void MQUALIFIER setCenter(const IVector2D &rVecCenter)
Definition: Arc2D.h:106
Definition: IAngle.hpp:47
bool operator==(const Float &x, const TComplex &z)
Definition: Complex.h:500