Ogre::ConvexBody Class Reference
[Math]

Holds a solid representation of a convex body. More...

#include <OgreConvexBody.h>

List of all members.

Public Types

typedef vector< Polygon * >::type PolygonList

Public Member Functions

 ConvexBody ()
 ~ConvexBody ()
 ConvexBody (const ConvexBody &cpy)
void define (const Frustum &frustum)
 Build a new polygon representation from a frustum.
void define (const AxisAlignedBox &aab)
 Build a new polygon representation from an AAB.
void clip (const Frustum &frustum)
 Clips the body with a frustum.
void clip (const AxisAlignedBox &aab)
 Clips the body with an AAB.
void clip (const ConvexBody &body)
 Clips the body with another body.
void clip (const Plane &pl, bool keepNegative=true)
 Clips the object by the positive half space of a plane.
void extend (const Vector3 &pt)
 Extends the existing body to incorporate the passed in point as a convex hull.
void reset (void)
 Resets the object.
size_t getPolygonCount (void) const
 Returns the current number of polygons.
size_t getVertexCount (size_t poly) const
 Returns the number of vertices for a polygon.
const PolygongetPolygon (size_t poly) const
 Returns a polygon.
const Vector3getVertex (size_t poly, size_t vertex) const
 Returns a specific vertex of a polygon.
const Vector3getNormal (size_t poly)
 Returns the normal of a specified polygon.
AxisAlignedBox getAABB (void) const
 Returns an AABB representation.
bool hasClosedHull (void) const
 Checks if the body has a closed hull.
void mergePolygons (void)
 Merges all neighboring polygons into one single polygon if they are lay in the same plane.
bool operator== (const ConvexBody &rhs) const
 Determines if the current object is equal to the compared one.
bool operator!= (const ConvexBody &rhs) const
 Determines if the current object is not equal to the compared one.
void logInfo () const
 Log details of this body.

Static Public Member Functions

static void _initialisePool ()
 Initialise the internal polygon pool used to minimise allocations.
static void _destroyPool ()
 Tear down the internal polygon pool used to minimise allocations.

Protected Member Functions

void insertPolygon (Polygon *pdata, size_t poly)
 Inserts a polygon at a particular point in the body.
void insertPolygon (Polygon *pdata)
 Inserts a polygon at the end.
void insertVertex (size_t poly, const Vector3 &vdata, size_t vertex)
 Inserts a vertex for a polygon at a particular point.
void insertVertex (size_t poly, const Vector3 &vdata)
 Inserts a vertex for a polygon at the end.
void deletePolygon (size_t poly)
 Deletes a specific polygon.
PolygonunlinkPolygon (size_t poly)
 Removes a specific polygon from the body without deleting it.
void moveDataFromBody (ConvexBody &body)
 Moves all polygons from the parameter body to this instance.
void deleteVertex (size_t poly, size_t vertex)
 Deletes a specific vertex of a specific polygon.
void setPolygon (Polygon *pdata, size_t poly)
 Replace a polygon at a particular index.
void setVertex (size_t poly, const Vector3 &vdata, size_t vertex)
 Replace a specific vertex of a polygon.
Polygon::EdgeMap getSingleEdges () const
 Returns the single edges in an EdgeMap (= edges where one side is a vertex and the other is empty space (a hole in the body)).
void storeEdgesOfPolygon (size_t poly, Polygon::EdgeMap *edgeMap) const
 Stores the edges of a specific polygon in a passed in structure.
void allocateSpace (size_t numPolygons, size_t numVertices)
 Allocates space for an specified amount of polygons with each of them having a specified number of vertices.
bool findAndEraseEdgePair (const Vector3 &vec, Polygon::EdgeMap &intersectionEdges, Vector3 &vNext) const
 Searches for a pair (an edge) in the intersectionList with an entry that equals vec, and removes it from the passed in list.

Static Protected Member Functions

static PolygonallocatePolygon ()
 Get a new polygon from the pool.
static void freePolygon (Polygon *poly)
 Release a polygon back tot he pool.

Protected Attributes

PolygonList mPolygons

Static Protected Attributes

static PolygonList msFreePolygons

Friends

_OgreExport friend std::ostream & operator<< (std::ostream &strm, const ConvexBody &body)
 Prints out the body with all its polygons.

Detailed Description

Holds a solid representation of a convex body.

Remarks:
Administers a convex body. All polygons of the body are convex and planar. Several operations may be applied, ranging from intersection to join where each result it itself a convex body.

Definition at line 51 of file OgreConvexBody.h.


Member Typedef Documentation

Definition at line 54 of file OgreConvexBody.h.


Constructor & Destructor Documentation

Ogre::ConvexBody::ConvexBody (  ) 
Ogre::ConvexBody::~ConvexBody (  ) 
Ogre::ConvexBody::ConvexBody ( const ConvexBody cpy  ) 

Member Function Documentation

static void Ogre::ConvexBody::_destroyPool (  )  [static]

Tear down the internal polygon pool used to minimise allocations.

static void Ogre::ConvexBody::_initialisePool (  )  [static]

Initialise the internal polygon pool used to minimise allocations.

static Polygon* Ogre::ConvexBody::allocatePolygon (  )  [static, protected]

Get a new polygon from the pool.

void Ogre::ConvexBody::allocateSpace ( size_t  numPolygons,
size_t  numVertices 
) [protected]

Allocates space for an specified amount of polygons with each of them having a specified number of vertices.

Note:
Old data (if available) will be erased.
void Ogre::ConvexBody::clip ( const Plane pl,
bool  keepNegative = true 
)

Clips the object by the positive half space of a plane.

void Ogre::ConvexBody::clip ( const ConvexBody body  ) 

Clips the body with another body.

void Ogre::ConvexBody::clip ( const AxisAlignedBox aab  ) 

Clips the body with an AAB.

The resulting holes are filled with new polygons.

void Ogre::ConvexBody::clip ( const Frustum frustum  ) 

Clips the body with a frustum.

The resulting holes are filled with new polygons.

void Ogre::ConvexBody::define ( const AxisAlignedBox aab  ) 

Build a new polygon representation from an AAB.

void Ogre::ConvexBody::define ( const Frustum frustum  ) 

Build a new polygon representation from a frustum.

void Ogre::ConvexBody::deletePolygon ( size_t  poly  )  [protected]

Deletes a specific polygon.

void Ogre::ConvexBody::deleteVertex ( size_t  poly,
size_t  vertex 
) [protected]

Deletes a specific vertex of a specific polygon.

void Ogre::ConvexBody::extend ( const Vector3 pt  ) 

Extends the existing body to incorporate the passed in point as a convex hull.

Remarks:
You must already have constructed a basic body using a 'construct' method.
bool Ogre::ConvexBody::findAndEraseEdgePair ( const Vector3 vec,
Polygon::EdgeMap intersectionEdges,
Vector3 vNext 
) const [protected]

Searches for a pair (an edge) in the intersectionList with an entry that equals vec, and removes it from the passed in list.

Parameters:
vec The vertex to search for in intersectionEdges
intersectionEdges A list of edges, which is updated if a match is found
vNext A reference to a vector which will be filled with the other vertex at the matching edge, if found.
Returns:
True if a match was found
static void Ogre::ConvexBody::freePolygon ( Polygon poly  )  [static, protected]

Release a polygon back tot he pool.

AxisAlignedBox Ogre::ConvexBody::getAABB ( void   )  const

Returns an AABB representation.

const Vector3& Ogre::ConvexBody::getNormal ( size_t  poly  ) 

Returns the normal of a specified polygon.

const Polygon& Ogre::ConvexBody::getPolygon ( size_t  poly  )  const

Returns a polygon.

size_t Ogre::ConvexBody::getPolygonCount ( void   )  const

Returns the current number of polygons.

Polygon::EdgeMap Ogre::ConvexBody::getSingleEdges (  )  const [protected]

Returns the single edges in an EdgeMap (= edges where one side is a vertex and the other is empty space (a hole in the body)).

const Vector3& Ogre::ConvexBody::getVertex ( size_t  poly,
size_t  vertex 
) const

Returns a specific vertex of a polygon.

size_t Ogre::ConvexBody::getVertexCount ( size_t  poly  )  const

Returns the number of vertices for a polygon.

bool Ogre::ConvexBody::hasClosedHull ( void   )  const

Checks if the body has a closed hull.

void Ogre::ConvexBody::insertPolygon ( Polygon pdata  )  [protected]

Inserts a polygon at the end.

Note:
After this method is called, the ConvexBody 'owns' this Polygon and will be responsible for deleting it.
void Ogre::ConvexBody::insertPolygon ( Polygon pdata,
size_t  poly 
) [protected]

Inserts a polygon at a particular point in the body.

Note:
After this method is called, the ConvexBody 'owns' this Polygon and will be responsible for deleting it.
void Ogre::ConvexBody::insertVertex ( size_t  poly,
const Vector3 vdata 
) [protected]

Inserts a vertex for a polygon at the end.

Note:
No checks are done whether the assembled polygon is (still) planar, the caller must ensure that this is the case.
void Ogre::ConvexBody::insertVertex ( size_t  poly,
const Vector3 vdata,
size_t  vertex 
) [protected]

Inserts a vertex for a polygon at a particular point.

Note:
No checks are done whether the assembled polygon is (still) planar, the caller must ensure that this is the case.
void Ogre::ConvexBody::logInfo (  )  const

Log details of this body.

void Ogre::ConvexBody::mergePolygons ( void   ) 

Merges all neighboring polygons into one single polygon if they are lay in the same plane.

void Ogre::ConvexBody::moveDataFromBody ( ConvexBody body  )  [protected]

Moves all polygons from the parameter body to this instance.

Note:
Both the passed in object and this instance are modified
bool Ogre::ConvexBody::operator!= ( const ConvexBody rhs  )  const

Determines if the current object is not equal to the compared one.

Definition at line 147 of file OgreConvexBody.h.

bool Ogre::ConvexBody::operator== ( const ConvexBody rhs  )  const

Determines if the current object is equal to the compared one.

void Ogre::ConvexBody::reset ( void   ) 

Resets the object.

void Ogre::ConvexBody::setPolygon ( Polygon pdata,
size_t  poly 
) [protected]

Replace a polygon at a particular index.

Note:
Again, the passed in polygon is owned by this object after this call returns, and this object is resonsible for deleting it.
void Ogre::ConvexBody::setVertex ( size_t  poly,
const Vector3 vdata,
size_t  vertex 
) [protected]

Replace a specific vertex of a polygon.

Note:
No checks are done whether the assembled polygon is (still) planar, the caller must ensure that this is the case.
void Ogre::ConvexBody::storeEdgesOfPolygon ( size_t  poly,
Polygon::EdgeMap edgeMap 
) const [protected]

Stores the edges of a specific polygon in a passed in structure.

Polygon* Ogre::ConvexBody::unlinkPolygon ( size_t  poly  )  [protected]

Removes a specific polygon from the body without deleting it.

Note:
The retrieved polygon needs to be deleted later by the caller.

Friends And Related Function Documentation

_OgreExport friend std::ostream& operator<< ( std::ostream &  strm,
const ConvexBody body 
) [friend]

Prints out the body with all its polygons.


Member Data Documentation

Definition at line 57 of file OgreConvexBody.h.

Definition at line 60 of file OgreConvexBody.h.


The documentation for this class was generated from the following file:

Copyright © 2012 Torus Knot Software Ltd
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
Last modified Fri May 25 23:37:18 2012