#include <FourPointPlaneBounds.h>
Public Types | |
typedef LocalPoint::ScalarType | Scalar |
Public Member Functions | |
virtual Bounds * | clone () const |
FourPointPlaneBounds (const LocalPoint &a, const LocalPoint &b, const LocalPoint &c, const LocalPoint &d) | |
virtual bool | inside (const Local3DPoint &lp, const LocalError &e, float scale) const |
Determine if a point is inside the bounds, taking error into account. | |
virtual bool | inside (const Local3DPoint &lp) const |
Determine if the point is inside the bounds. | |
virtual float | length () const |
virtual float | thickness () const |
virtual float | width () const |
~FourPointPlaneBounds () | |
Private Member Functions | |
double | checkSide (int i, const Local2DPoint &lp) const |
double | checkSide (int i, Scalar x, Scalar y) const |
const Local2DPoint & | corner (int i) const |
Private Attributes | |
Local2DPoint | corners_ [4] |
Definition at line 10 of file FourPointPlaneBounds.h.
Definition at line 13 of file FourPointPlaneBounds.h.
FourPointPlaneBounds::FourPointPlaneBounds | ( | const LocalPoint & | a, |
const LocalPoint & | b, | ||
const LocalPoint & | c, | ||
const LocalPoint & | d | ||
) |
The corners are ASSUMED to come in cyclic order
Definition at line 8 of file FourPointPlaneBounds.cc.
References checkSide(), corner(), corners_, gather_cfg::cout, i, swap(), PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().
Referenced by clone().
{ corners_[0] = Local2DPoint( a.x(), a.y()); corners_[1] = Local2DPoint( b.x(), b.y()); corners_[2] = Local2DPoint( c.x(), c.y()); corners_[3] = Local2DPoint( d.x(), d.y()); // check for convexity for (int i=0; i<4; ++i) { if (checkSide( i, corner(i+2)) * checkSide( i, corner(i+3)) < 0) { // not on same side throw GeometryError("FourPointPlaneBounds: coners not in order or not convex"); } } double side = checkSide( 0, corners_[2]); // - for clockwise corners, + for counterclockwise if (side < 0) { std::cout << "FourPointPlaneBounds: Changing order of corners to counterclockwise" << std::endl; std::swap( corners_[1], corners_[3]); } }
FourPointPlaneBounds::~FourPointPlaneBounds | ( | ) | [inline] |
Definition at line 19 of file FourPointPlaneBounds.h.
{}
double FourPointPlaneBounds::checkSide | ( | int | i, |
const Local2DPoint & | lp | ||
) | const [private] |
Definition at line 29 of file FourPointPlaneBounds.cc.
References PV2DBase< T, PVType, FrameType >::x(), and PV2DBase< T, PVType, FrameType >::y().
Referenced by FourPointPlaneBounds(), and inside().
Definition at line 41 of file FourPointPlaneBounds.h.
References corner(), v, PV2DBase< T, PVType, FrameType >::x(), and PV2DBase< T, PVType, FrameType >::y().
virtual Bounds* FourPointPlaneBounds::clone | ( | void | ) | const [inline, virtual] |
Implements Bounds.
Definition at line 32 of file FourPointPlaneBounds.h.
References FourPointPlaneBounds().
{return new FourPointPlaneBounds(*this);}
const Local2DPoint& FourPointPlaneBounds::corner | ( | int | i | ) | const [inline, private] |
Definition at line 38 of file FourPointPlaneBounds.h.
References corners_.
Referenced by checkSide(), and FourPointPlaneBounds().
virtual bool FourPointPlaneBounds::inside | ( | const Local3DPoint & | , |
const LocalError & | , | ||
float | scale | ||
) | const [inline, virtual] |
Determine if a point is inside the bounds, taking error into account.
Implements Bounds.
Definition at line 28 of file FourPointPlaneBounds.h.
References inside().
{ return inside( lp); }
bool FourPointPlaneBounds::inside | ( | const Local3DPoint & | ) | const [virtual] |
Determine if the point is inside the bounds.
Implements Bounds.
Definition at line 33 of file FourPointPlaneBounds.cc.
References checkSide(), i, PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().
Referenced by inside().
float FourPointPlaneBounds::length | ( | ) | const [virtual] |
"Lenght" of the bounded volume; refer to the concrete class documentation for the specific definition.
Implements Bounds.
Definition at line 41 of file FourPointPlaneBounds.cc.
{return 0;}
float FourPointPlaneBounds::thickness | ( | ) | const [virtual] |
"Thickness" of the bound around the surface; refer to the concrete class documentation for the specific definition.
Implements Bounds.
Definition at line 43 of file FourPointPlaneBounds.cc.
{return 0;}
float FourPointPlaneBounds::width | ( | ) | const [virtual] |
"width" of the bounds; refer to the concrete class documentation for the specific definition.
Implements Bounds.
Definition at line 42 of file FourPointPlaneBounds.cc.
{return 0;}
Local2DPoint FourPointPlaneBounds::corners_[4] [private] |
Definition at line 36 of file FourPointPlaneBounds.h.
Referenced by corner(), and FourPointPlaneBounds().