Public Member Functions | Static Public Member Functions

zeus::TCircle2D Class Reference

#include <Circle2D.h>

Inheritance diagram for zeus::TCircle2D:
zeus::ICircle2D zeus::IGeometricObject2D

List of all members.

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 TCircle2Doperator= (const ICircle2D &rCircle)
 Assignment of interface type object.
const TCircle2Doperator= (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.

Detailed Description

ICircle2D encapsulates a three dimensional floating point circle for vector geometry calculations.


Constructor & Destructor Documentation

zeus::TCircle2D::TCircle2D (  ) [inline]

Default constructor, initializing as unit circle.

zeus::TCircle2D::TCircle2D ( const IVector2D rVecCenter,
const Float &  rfRadius 
)

Standard constructor.

Standard constructor.

Parameters:
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.


Member Function Documentation

virtual void MQUALIFIER zeus::TCircle2D::assign ( const ICircle2D rCircle ) [inline, virtual]

Assignment.

Parameters:
rCircle[IN]: Circle to be assigned to this circle.

Implements zeus::ICircle2D.

bool MQUALIFIER zeus::TCircle2D::calcAngleFromPoint ( const IVector2D rVecPoint,
IAngle rAngle 
) const [virtual]
See also:
ICircle2D.

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.

Parameters:
rArc1,2[IN] : The 2 given arcs.
rfRadius[IN] : The desired radius.
rLstTangentCircles[OUT]: List of tangent circles.
rfTangentTolerance[IN] : See IGeometricObject2D::intersect(..).
Return values:
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.

Parameters:
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(..).
Return values:
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.

Parameters:
rLineSegment1,2[IN] : The 2 given line segments.
rfRadius[IN] : The desired radius.
rLstTangentCircles[OUT]: List of tangent circles.
rfTangentTolerance[IN] : See IGeometricObject2D::intersect(..).
Return values:
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.

Parameters:
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(..).
Return values:
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.

Parameters:
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(..).
Return values:
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.

Parameters:
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(..).
Return values:
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]
Float MQUALIFIER zeus::TCircle2D::calcDistanceToObject ( const IGeometricObject2D rObject ) const [virtual]
Float MQUALIFIER zeus::TCircle2D::calcDistanceToPoint ( const IVector2D rVecPoint ) const [virtual]
void MQUALIFIER zeus::TCircle2D::calcPointFromAngle ( const IAngle rAngle,
IVector2D rVecPoint 
) const [virtual]
See also:
ICircle2D.

Implements zeus::ICircle2D.

bool MQUALIFIER zeus::TCircle2D::containsPoint ( const IVector2D rVecPoint ) const [virtual]
See also:
ICircle2D.

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.

Parameters:
rVecPoint1,2,3[IN] : The 3 given points.
rCircle[OUT]: The created circle.
Returns:
: No error.
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]
void MQUALIFIER zeus::TCircle2D::getMinMaxCoordinates ( Float &  rfXMin,
Float &  rfXMax,
Float &  rfYMin,
Float &  rfYMax 
) const [virtual]
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]
Retval MQUALIFIER zeus::TCircle2D::getXMinPoint ( IVector2D rVecPoint ) const [virtual]
Retval MQUALIFIER zeus::TCircle2D::getYMaxPoint ( IVector2D rVecPoint ) const [virtual]
Retval MQUALIFIER zeus::TCircle2D::getYMinPoint ( IVector2D rVecPoint ) const [virtual]
Retval MQUALIFIER zeus::TCircle2D::intersect ( const IGeometricObject2D rObject,
IList< IVector2D > &  rLstIntersectionPoints,
const Float &  rfTangentTolerance = INTERSECT_TANGENT_TOLERANCE 
) const [virtual]
virtual bool MQUALIFIER zeus::TCircle2D::isEqual ( const ICircle2D rCircle ) const [inline, virtual]

Comparisons.

Equality with another circle?

Parameters:
rCircle[IN]: The other circle.
Returns:
: Equality.

Implements zeus::ICircle2D.

bool MQUALIFIER zeus::TCircle2D::isPointInside ( const IVector2D rVecPoint ) const [virtual]
See also:
ICircle2D.

Implements zeus::ICircle2D.

bool zeus::TCircle2D::operator!= ( const ICircle2D rCircle ) const [inline]

Inequality with another circle?

const TCircle2D & zeus::TCircle2D::operator= ( const TCircle2D rCircle )

Assignment of class type object.

Assignment of class type object.

Parameters:
rCircle[IN]: Circle to be assigned to this circle.
Returns:
: const reference to this circle after the assignment.
const TCircle2D & zeus::TCircle2D::operator= ( const ICircle2D rCircle )

Assignment of interface type object.

Assignment.

Assignment of interface type object.

Parameters:
rCircle[IN]: Circle to be assigned to this circle.
Returns:
: const reference to this circle after the assignment.
bool zeus::TCircle2D::operator== ( const ICircle2D rCircle ) const

Equality with another circle?

Operators.

Equality with another circle?

Parameters:
rCircle[IN]: The other circle.
Returns:
: Equality.
virtual void MQUALIFIER zeus::TCircle2D::setCenter ( const IVector2D rVecCenter ) [inline, virtual]

Set the center vector.

Parameters:
rVecCenter[IN]: The center vector.

Implements zeus::ICircle2D.

virtual void MQUALIFIER zeus::TCircle2D::setRadius ( const Float &  rfRadius ) [inline, virtual]

Set the radius.

Parameters:
rfRadius[IN]: The new radius.

Implements zeus::ICircle2D.


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines


Written by Benjamin Hadorn http://www.xatlantis.ch.
Last change made on Sun Jan 22 2012 15:32:26