#include <Circle2D.h>
Public Member Functions | |
| TCircle2D () | |
| Default constructor, initializing as unit circle. | |
| TCircle2D (const IVector2D &rVecCenter, const Float &rfRadius) | |
| Standard constructor. | |
| TCircle2D (const TCircle2D &rCircle) | |
| Copy constructor: Constructor taking class type object. | |
| TCircle2D (const ICircle2D &rCircle) | |
| Constructor taking interface type object. | |
| virtual | ~TCircle2D () |
| Virtual destructor. | |
| virtual const IVector2D &MQUALIFIER | getCenter () const |
| virtual void MQUALIFIER | setCenter (const IVector2D &rVecCenter) |
| virtual const Float &MQUALIFIER | getRadius () const |
| virtual void MQUALIFIER | setRadius (const Float &rfRadius) |
| virtual void MQUALIFIER | assign (const ICircle2D &rCircle) |
| virtual bool MQUALIFIER | isEqual (const ICircle2D &rCircle) const |
| virtual void MQUALIFIER | calcPointFromAngle (const IAngle &rAngle, IVector2D &rVecPoint) const |
| virtual bool MQUALIFIER | calcAngleFromPoint (const IVector2D &rVecPoint, IAngle &rAngle) const |
| virtual bool MQUALIFIER | isPointInside (const IVector2D &rVecPoint) const |
| virtual const InterfaceID &MQUALIFIER | getInterfaceID () const |
| virtual Retval MQUALIFIER | intersect (const IGeometricObject2D &rObject, IList< IVector2D > &rLstIntersectionPoints, const Float &rfTangentTolerance=INTERSECT_TANGENT_TOLERANCE) const |
| virtual bool MQUALIFIER | containsPoint (const IVector2D &rVecPoint) const |
| virtual void MQUALIFIER | calcClosestPointToPoint (const IVector2D &rVecPoint, IVector2D &rVecClosestPoint) const |
| virtual Float MQUALIFIER | calcDistanceToPoint (const IVector2D &rVecPoint) const |
| virtual Float MQUALIFIER | calcDistanceToObject (const IGeometricObject2D &rObject) const |
| virtual Retval MQUALIFIER | getXMinPoint (IVector2D &rVecPoint) const |
| virtual Retval MQUALIFIER | getXMaxPoint (IVector2D &rVecPoint) const |
| virtual Retval MQUALIFIER | getYMinPoint (IVector2D &rVecPoint) const |
| virtual Retval MQUALIFIER | getYMaxPoint (IVector2D &rVecPoint) const |
| virtual void MQUALIFIER | getMinMaxCoordinates (Float &rfXMin, Float &rfXMax, Float &rfYMin, Float &rfYMax) const |
| const TCircle2D & | operator= (const ICircle2D &rCircle) |
| Assignment of interface type object. | |
| const TCircle2D & | operator= (const TCircle2D &rCircle) |
| Assignment of class type object. | |
| bool | operator== (const ICircle2D &rCircle) const |
| Equality with another circle? | |
| bool | operator!= (const ICircle2D &rCircle) const |
| Inequality with another circle? | |
Static Public Member Functions | |
| static bool | createFrom3Points (const IVector2D &rVecPoint1, const IVector2D &rVecPoint2, const IVector2D &rVecPoint3, ICircle2D &rCircle) |
| Creation method to give 3 points. | |
| static Retval | calcCirclesTangentTo2StraightLines (const IStraightLine2D &rStraightLine1, const IStraightLine2D &rStraightLine2, const Float &rfRadius, IList< ICircle2D > &rLstTangentCircles, const Float &rfTangentTolerance=INTERSECT_TANGENT_TOLERANCE) |
| Static method to calculate all 4 circles tangent to 2 straight lines. | |
| static Retval | calcCirclesTangentToStraightLineAndCircle (const IStraightLine2D &rStraightLine, const ICircle2D &rCircle, const Float &rfRadius, IList< ICircle2D > &rLstTangentCircles, const Float &rfTangentTolerance=INTERSECT_TANGENT_TOLERANCE) |
| Static method to calculate all 8 circles tangent to a straight line and a circle. | |
| static Retval | calcCirclesTangentTo2Circles (const ICircle2D &rCircle1, const ICircle2D &rCircle2, const Float &rfRadius, IList< ICircle2D > &rLstTangentCircles, const Float &rfTangentTolerance=INTERSECT_TANGENT_TOLERANCE) |
| Static method to calculate all 8 circles tangent to 2 circles. | |
| static Retval | calcCirclesTangentTo2LineSegments (const ILineSegment2D &rLineSegment1, const ILineSegment2D &rLineSegment2, const Float &rfRadius, IList< ICircle2D > &rLstTangentCircles, const Float &rfTangentTolerance=INTERSECT_TANGENT_TOLERANCE) |
| Static method to calculate all circles tangent to 2 line segments. | |
| static Retval | calcCirclesTangentToLineSegmentAndArc (const ILineSegment2D &rLineSegment, const IArc2D &rArc, const Float &rfRadius, IList< ICircle2D > &rLstTangentCircles, const Float &rfTangentTolerance=INTERSECT_TANGENT_TOLERANCE) |
| Static method to calculate all circles tangent to a line segment and an arc. | |
| static Retval | calcCirclesTangentTo2Arcs (const IArc2D &rArc1, const IArc2D &rArc2, const Float &rfRadius, IList< ICircle2D > &rLstTangentCircles, const Float &rfTangentTolerance=INTERSECT_TANGENT_TOLERANCE) |
| Static method to calculate all circles tangent to 2 arcs. | |
ICircle2D encapsulates a three dimensional floating point circle for vector geometry calculations.
| zeus::TCircle2D::TCircle2D | ( | ) | [inline] |
Default constructor, initializing as unit circle.
| zeus::TCircle2D::TCircle2D | ( | const IVector2D & | rVecCenter, |
| const Float & | rfRadius | ||
| ) |
Standard constructor.
Standard constructor.
| rVecCenter | [IN]: Center. |
| rfRadius | [IN]: Radius. |
| zeus::TCircle2D::TCircle2D | ( | const TCircle2D & | rCircle ) | [inline] |
Copy constructor: Constructor taking class type object.
| zeus::TCircle2D::TCircle2D | ( | const ICircle2D & | rCircle ) | [inline] |
Constructor taking interface type object.
| virtual zeus::TCircle2D::~TCircle2D | ( | ) | [inline, virtual] |
Virtual destructor.
| virtual void MQUALIFIER zeus::TCircle2D::assign | ( | const ICircle2D & | rCircle ) | [inline, virtual] |
Assignment.
| rCircle | [IN]: Circle to be assigned to this circle. |
Implements zeus::ICircle2D.
| bool MQUALIFIER zeus::TCircle2D::calcAngleFromPoint | ( | const IVector2D & | rVecPoint, |
| IAngle & | rAngle | ||
| ) | const [virtual] |
Implements zeus::ICircle2D.
| Retval zeus::TCircle2D::calcCirclesTangentTo2Arcs | ( | const IArc2D & | rArc1, |
| const IArc2D & | rArc2, | ||
| const Float & | rfRadius, | ||
| IList< ICircle2D > & | rLstTangentCircles, | ||
| const Float & | rfTangentTolerance = INTERSECT_TANGENT_TOLERANCE |
||
| ) | [static] |
Static method to calculate all circles tangent to 2 arcs.
Static method to calculate all circles tangent to 2 arcs.
| rArc1,2 | [IN] : The 2 given arcs. |
| rfRadius | [IN] : The desired radius. |
| rLstTangentCircles | [OUT]: List of tangent circles. |
| rfTangentTolerance | [IN] : See IGeometricObject2D::intersect(..). |
| RET_NOERROR | : No error. Circles were added to rLstTangentCircles. |
| RET_EMPTY_SET | : No tangent circles exist geometrically. No circles were added to rLstTangentCircles. |
| RET_INFINITE_SET | : An infinite number of tangent circles exists. No circles were added to rLstTangentCircles. |
| Retval zeus::TCircle2D::calcCirclesTangentTo2Circles | ( | const ICircle2D & | rCircle1, |
| const ICircle2D & | rCircle2, | ||
| const Float & | rfRadius, | ||
| IList< ICircle2D > & | rLstTangentCircles, | ||
| const Float & | rfTangentTolerance = INTERSECT_TANGENT_TOLERANCE |
||
| ) | [static] |
Static method to calculate all 8 circles tangent to 2 circles.
Static method to calculate all 8 circles tangent to 2 circles.
| rCircle1 | [IN] : The first given circle. |
| rCircle2 | [IN] : The second given circle. |
| rfRadius | [IN] : The desired radius. |
| rLstTangentCircles | [OUT]: List of tangent circles. The maximum is 8, all values from 0 to 8 are possible. |
| rfTangentTolerance | [IN] : See IGeometricObject2D::intersect(..). |
| RET_NOERROR | : No error. Circles were added to rLstTangentCircles. |
| RET_EMPTY_SET | : No tangent circles exist geometrically. No circles were added to rLstTangentCircles. |
| RET_INFINITE_SET | : An infinite number of tangent circles exists. No circles were added to rLstTangentCircles. |
| Retval zeus::TCircle2D::calcCirclesTangentTo2LineSegments | ( | const ILineSegment2D & | rLineSegment1, |
| const ILineSegment2D & | rLineSegment2, | ||
| const Float & | rfRadius, | ||
| IList< ICircle2D > & | rLstTangentCircles, | ||
| const Float & | rfTangentTolerance = INTERSECT_TANGENT_TOLERANCE |
||
| ) | [static] |
Static method to calculate all circles tangent to 2 line segments.
Static method to calculate all circles tangent to 2 line segments.
| rLineSegment1,2 | [IN] : The 2 given line segments. |
| rfRadius | [IN] : The desired radius. |
| rLstTangentCircles | [OUT]: List of tangent circles. |
| rfTangentTolerance | [IN] : See IGeometricObject2D::intersect(..). |
| RET_NOERROR | : No error. Circles were added to rLstTangentCircles. |
| RET_EMPTY_SET | : No tangent circles exist. No circles were added to rLstTangentCircles. |
| RET_INFINITE_SET | : An infinite number of tangent circles exists, as the 2 line segments are parallel and the distance between them is equal to 2*rfRadius. No circles were added to rLstTangentCircles. |
| RET_INTERNAL_ERROR | : An internal error has occurred, requiring code correction and ZeusMathTest extension. |
| Retval zeus::TCircle2D::calcCirclesTangentTo2StraightLines | ( | const IStraightLine2D & | rStraightLine1, |
| const IStraightLine2D & | rStraightLine2, | ||
| const Float & | rfRadius, | ||
| IList< ICircle2D > & | rLstTangentCircles, | ||
| const Float & | rfTangentTolerance = INTERSECT_TANGENT_TOLERANCE |
||
| ) | [static] |
Static method to calculate all 4 circles tangent to 2 straight lines.
Static methods to calculate tangent circles.
Static method to calculate all 4 circles tangent to 2 straight lines.
| rStraightLine1,2 | [IN] : The given straight lines. |
| rfRadius | [IN] : The desired radius. |
| rLstTangentCircles | [OUT]: List of tangent circles. The method will add 4 circles in case RET_NOERROR is returned and no circles otherwise. |
| rfTangentTolerance | [IN] : See IGeometricObject2D::intersect(..). |
| RET_NOERROR | : 4 circles were added to rLstTangentCircles. |
| RET_EMPTY_SET | : No tangent circle exists, as the 2 straight lines are parallel and the distance between them is not equal to 2*rfRadius. No circles were added to rLstTangentCircles. |
| RET_INFINITE_SET | : An infinite number of tangent circles exists, as the 2 straight lines are parallel and the distance between them is equal to 2*rfRadius. No circles were added to rLstTangentCircles. |
| RET_INTERNAL_ERROR | : An internal error has occurred, requiring code correction and ZeusMathTest extension. |
| Retval zeus::TCircle2D::calcCirclesTangentToLineSegmentAndArc | ( | const ILineSegment2D & | rLineSegment, |
| const IArc2D & | rArc, | ||
| const Float & | rfRadius, | ||
| IList< ICircle2D > & | rLstTangentCircles, | ||
| const Float & | rfTangentTolerance = INTERSECT_TANGENT_TOLERANCE |
||
| ) | [static] |
Static method to calculate all circles tangent to a line segment and an arc.
Static method to calculate all circles tangent to a line segment and an arc.
| rLineSegment | [IN] : The given line segment. |
| rArc | [IN] : The given arc. |
| rfRadius | [IN] : The desired radius. |
| rLstTangentCircles | [OUT]: List of tangent circles. |
| rfTangentTolerance | [IN] : See IGeometricObject2D::intersect(..). |
| RET_NOERROR | : No error. Circles were added to rLstTangentCircles. |
| RET_EMPTY_SET | : No tangent circles exist geometrically. No circles were added to rLstTangentCircles. |
| RET_INFINITE_SET | : This case is geometrically impossible, hence this retval will never be returned. |
| Retval zeus::TCircle2D::calcCirclesTangentToStraightLineAndCircle | ( | const IStraightLine2D & | rStraightLine, |
| const ICircle2D & | rCircle, | ||
| const Float & | rfRadius, | ||
| IList< ICircle2D > & | rLstTangentCircles, | ||
| const Float & | rfTangentTolerance = INTERSECT_TANGENT_TOLERANCE |
||
| ) | [static] |
Static method to calculate all 8 circles tangent to a straight line and a circle.
Static method to calculate all 8 circles tangent to a straight line and a circle.
| rStraightLine | [IN] : The given straight line. |
| rCircle | [IN] : The given circle. |
| rfRadius | [IN] : The desired radius. |
| rLstTangentCircles | [OUT]: List of tangent circles. Maximum is 8, 0, 1, 2, 4, 5, 6 and 7 are also possible. |
| rfTangentTolerance | [IN] : See IGeometricObject2D::intersect(..). |
| RET_NOERROR | : No error. Circles were added to rLstTangentCircles. |
| RET_EMPTY_SET | : No tangent circles exist geometrically. No circles were added to rLstTangentCircles. |
| RET_INFINITE_SET | : This case is geometrically impossible, hence this retval will never be returned. |
| void MQUALIFIER zeus::TCircle2D::calcClosestPointToPoint | ( | const IVector2D & | rVecPoint, |
| IVector2D & | rVecClosestPoint | ||
| ) | const [virtual] |
Implements zeus::IGeometricObject2D.
| Float MQUALIFIER zeus::TCircle2D::calcDistanceToObject | ( | const IGeometricObject2D & | rObject ) | const [virtual] |
Implements zeus::IGeometricObject2D.
| Float MQUALIFIER zeus::TCircle2D::calcDistanceToPoint | ( | const IVector2D & | rVecPoint ) | const [virtual] |
Implements zeus::IGeometricObject2D.
| void MQUALIFIER zeus::TCircle2D::calcPointFromAngle | ( | const IAngle & | rAngle, |
| IVector2D & | rVecPoint | ||
| ) | const [virtual] |
Implements zeus::ICircle2D.
| bool MQUALIFIER zeus::TCircle2D::containsPoint | ( | const IVector2D & | rVecPoint ) | const [virtual] |
Implements zeus::IGeometricObject2D.
| bool zeus::TCircle2D::createFrom3Points | ( | const IVector2D & | rVecPoint1, |
| const IVector2D & | rVecPoint2, | ||
| const IVector2D & | rVecPoint3, | ||
| ICircle2D & | rCircle | ||
| ) | [static] |
Creation method to give 3 points.
Creation method to give 3 points.
| rVecPoint1,2,3 | [IN] : The 3 given points. |
| rCircle | [OUT]: The created circle. |
| virtual const IVector2D& MQUALIFIER zeus::TCircle2D::getCenter | ( | ) | const [inline, virtual] |
Interface ICircle2D.
Implements zeus::ICircle2D.
| virtual const InterfaceID& MQUALIFIER zeus::TCircle2D::getInterfaceID | ( | ) | const [inline, virtual] |
Interface IGeometricObject2D.
Implements zeus::IGeometricObject2D.
| void MQUALIFIER zeus::TCircle2D::getMinMaxCoordinates | ( | Float & | rfXMin, |
| Float & | rfXMax, | ||
| Float & | rfYMin, | ||
| Float & | rfYMax | ||
| ) | const [virtual] |
Implements zeus::IGeometricObject2D.
| virtual const Float& MQUALIFIER zeus::TCircle2D::getRadius | ( | ) | const [inline, virtual] |
Get the radius.
Implements zeus::ICircle2D.
| Retval MQUALIFIER zeus::TCircle2D::getXMaxPoint | ( | IVector2D & | rVecPoint ) | const [virtual] |
Implements zeus::IGeometricObject2D.
| Retval MQUALIFIER zeus::TCircle2D::getXMinPoint | ( | IVector2D & | rVecPoint ) | const [virtual] |
Implements zeus::IGeometricObject2D.
| Retval MQUALIFIER zeus::TCircle2D::getYMaxPoint | ( | IVector2D & | rVecPoint ) | const [virtual] |
Implements zeus::IGeometricObject2D.
| Retval MQUALIFIER zeus::TCircle2D::getYMinPoint | ( | IVector2D & | rVecPoint ) | const [virtual] |
Implements zeus::IGeometricObject2D.
| Retval MQUALIFIER zeus::TCircle2D::intersect | ( | const IGeometricObject2D & | rObject, |
| IList< IVector2D > & | rLstIntersectionPoints, | ||
| const Float & | rfTangentTolerance = INTERSECT_TANGENT_TOLERANCE |
||
| ) | const [virtual] |
Implements zeus::IGeometricObject2D.
| virtual bool MQUALIFIER zeus::TCircle2D::isEqual | ( | const ICircle2D & | rCircle ) | const [inline, virtual] |
Comparisons.
Equality with another circle?
| rCircle | [IN]: The other circle. |
Implements zeus::ICircle2D.
| bool MQUALIFIER zeus::TCircle2D::isPointInside | ( | const IVector2D & | rVecPoint ) | const [virtual] |
Implements zeus::ICircle2D.
| bool zeus::TCircle2D::operator!= | ( | const ICircle2D & | rCircle ) | const [inline] |
Inequality with another circle?
Assignment of class type object.
Assignment of class type object.
| rCircle | [IN]: Circle to be assigned to this circle. |
Assignment of interface type object.
Assignment.
Assignment of interface type object.
| rCircle | [IN]: Circle to be assigned to this circle. |
| bool zeus::TCircle2D::operator== | ( | const ICircle2D & | rCircle ) | const |
Equality with another circle?
Operators.
Equality with another circle?
| rCircle | [IN]: The other circle. |
| virtual void MQUALIFIER zeus::TCircle2D::setCenter | ( | const IVector2D & | rVecCenter ) | [inline, virtual] |
| virtual void MQUALIFIER zeus::TCircle2D::setRadius | ( | const Float & | rfRadius ) | [inline, virtual] |