OpenSceneGraph
Public Types | Public Member Functions | Protected Attributes | List of all members
osg::Polytope Class Reference

A Polytope class for representing convex clipping volumes made up of a set of planes. More...

Public Types

typedef unsigned int ClippingMask
 
typedef std::vector< PlanePlaneList
 
typedef std::vector< Vec3VertexList
 
typedef fast_back_stack< ClippingMaskMaskStack
 

Public Member Functions

 Polytope ()
 
 Polytope (const Polytope &cv)
 
 Polytope (const PlaneList &pl)
 
 ~Polytope ()
 
void clear ()
 
Polytopeoperator= (const Polytope &cv)
 
void setToUnitFrustum (bool withNear=true, bool withFar=true)
 Create a Polytope which is a cube, centered at 0,0,0, with sides of 2 units. More...
 
void setToBoundingBox (const BoundingBox &bb)
 Create a Polytope which is a equivalent to BoundingBox. More...
 
void setAndTransformProvidingInverse (const Polytope &pt, const osg::Matrix &matrix)
 
void set (const PlaneList &pl)
 
void add (const osg::Plane &pl)
 
void flip ()
 flip/reverse the orientation of all the planes. More...
 
bool empty () const
 
PlaneListgetPlaneList ()
 
const PlaneListgetPlaneList () const
 
void setReferenceVertexList (VertexList &vertices)
 
VertexListgetReferenceVertexList ()
 
const VertexListgetReferenceVertexList () const
 
void setupMask ()
 
ClippingMaskgetCurrentMask ()
 
ClippingMask getCurrentMask () const
 
void setResultMask (ClippingMask mask)
 
ClippingMask getResultMask () const
 
MaskStackgetMaskStack ()
 
const MaskStackgetMaskStack () const
 
void pushCurrentMask ()
 
void popCurrentMask ()
 
bool contains (const osg::Vec3 &v) const
 Check whether a vertex is contained within clipping set. More...
 
bool contains (const std::vector< Vec3 > &vertices)
 Check whether any part of vertex list is contained within clipping set. More...
 
bool contains (const osg::BoundingSphere &bs)
 Check whether any part of a bounding sphere is contained within clipping set. More...
 
bool contains (const osg::BoundingBox &bb)
 Check whether any part of a bounding box is contained within clipping set. More...
 
bool containsAllOf (const std::vector< Vec3 > &vertices)
 Check whether all of vertex list is contained with clipping set. More...
 
bool containsAllOf (const osg::BoundingSphere &bs)
 Check whether the entire bounding sphere is contained within clipping set. More...
 
bool containsAllOf (const osg::BoundingBox &bb)
 Check whether the entire bounding box is contained within clipping set. More...
 
bool contains (const osg::Vec3f &v0, const osg::Vec3f &v1, const osg::Vec3f &v2) const
 Check whether any part of a triangle is contained within the polytope. More...
 
void transform (const osg::Matrix &matrix)
 Transform the clipping set by matrix. More...
 
void transformProvidingInverse (const osg::Matrix &matrix)
 Transform the clipping set by provide a pre inverted matrix. More...
 

Protected Attributes

MaskStack _maskStack
 
ClippingMask _resultMask
 
PlaneList _planeList
 
VertexList _referenceVertexList
 

Detailed Description

A Polytope class for representing convex clipping volumes made up of a set of planes.

When adding planes, their normals should point inwards (into the volume)

Member Typedef Documentation

◆ ClippingMask

typedef unsigned int osg::Polytope::ClippingMask

◆ MaskStack

◆ PlaneList

typedef std::vector<Plane> osg::Polytope::PlaneList

◆ VertexList

typedef std::vector<Vec3> osg::Polytope::VertexList

Constructor & Destructor Documentation

◆ Polytope() [1/3]

osg::Polytope::Polytope ( )
inline

◆ Polytope() [2/3]

osg::Polytope::Polytope ( const Polytope cv)
inline

◆ Polytope() [3/3]

osg::Polytope::Polytope ( const PlaneList pl)
inline

◆ ~Polytope()

osg::Polytope::~Polytope ( )
inline

Member Function Documentation

◆ add()

void osg::Polytope::add ( const osg::Plane pl)
inline

◆ clear()

void osg::Polytope::clear ( )
inline

◆ contains() [1/5]

bool osg::Polytope::contains ( const osg::Vec3 v) const
inline

Check whether a vertex is contained within clipping set.

◆ contains() [2/5]

bool osg::Polytope::contains ( const std::vector< Vec3 > &  vertices)
inline

Check whether any part of vertex list is contained within clipping set.

◆ contains() [3/5]

bool osg::Polytope::contains ( const osg::BoundingSphere bs)
inline

Check whether any part of a bounding sphere is contained within clipping set.

Using a mask to determine which planes should be used for the check, and modifying the mask to turn off planes which wouldn't contribute to clipping of any internal objects. This feature is used in osgUtil::CullVisitor to prevent redundant plane checking.

◆ contains() [4/5]

bool osg::Polytope::contains ( const osg::BoundingBox bb)
inline

Check whether any part of a bounding box is contained within clipping set.

Using a mask to determine which planes should be used for the check, and modifying the mask to turn off planes which wouldn't contribute to clipping of any internal objects. This feature is used in osgUtil::CullVisitor to prevent redundant plane checking.

◆ contains() [5/5]

bool osg::Polytope::contains ( const osg::Vec3f v0,
const osg::Vec3f v1,
const osg::Vec3f v2 
) const

Check whether any part of a triangle is contained within the polytope.

◆ containsAllOf() [1/3]

bool osg::Polytope::containsAllOf ( const std::vector< Vec3 > &  vertices)
inline

Check whether all of vertex list is contained with clipping set.

◆ containsAllOf() [2/3]

bool osg::Polytope::containsAllOf ( const osg::BoundingSphere bs)
inline

Check whether the entire bounding sphere is contained within clipping set.

◆ containsAllOf() [3/3]

bool osg::Polytope::containsAllOf ( const osg::BoundingBox bb)
inline

Check whether the entire bounding box is contained within clipping set.

◆ empty()

bool osg::Polytope::empty ( ) const
inline

◆ flip()

void osg::Polytope::flip ( )
inline

flip/reverse the orientation of all the planes.

◆ getCurrentMask() [1/2]

ClippingMask& osg::Polytope::getCurrentMask ( )
inline

◆ getCurrentMask() [2/2]

ClippingMask osg::Polytope::getCurrentMask ( ) const
inline

◆ getMaskStack() [1/2]

MaskStack& osg::Polytope::getMaskStack ( )
inline

◆ getMaskStack() [2/2]

const MaskStack& osg::Polytope::getMaskStack ( ) const
inline

◆ getPlaneList() [1/2]

PlaneList& osg::Polytope::getPlaneList ( )
inline

◆ getPlaneList() [2/2]

const PlaneList& osg::Polytope::getPlaneList ( ) const
inline

◆ getReferenceVertexList() [1/2]

VertexList& osg::Polytope::getReferenceVertexList ( )
inline

◆ getReferenceVertexList() [2/2]

const VertexList& osg::Polytope::getReferenceVertexList ( ) const
inline

◆ getResultMask()

ClippingMask osg::Polytope::getResultMask ( ) const
inline

◆ operator=()

Polytope& osg::Polytope::operator= ( const Polytope cv)
inline

◆ popCurrentMask()

void osg::Polytope::popCurrentMask ( )
inline

◆ pushCurrentMask()

void osg::Polytope::pushCurrentMask ( )
inline

◆ set()

void osg::Polytope::set ( const PlaneList pl)
inline

◆ setAndTransformProvidingInverse()

void osg::Polytope::setAndTransformProvidingInverse ( const Polytope pt,
const osg::Matrix matrix 
)
inline

◆ setReferenceVertexList()

void osg::Polytope::setReferenceVertexList ( VertexList vertices)
inline

◆ setResultMask()

void osg::Polytope::setResultMask ( ClippingMask  mask)
inline

◆ setToBoundingBox()

void osg::Polytope::setToBoundingBox ( const BoundingBox bb)
inline

◆ setToUnitFrustum()

void osg::Polytope::setToUnitFrustum ( bool  withNear = true,
bool  withFar = true 
)
inline

Create a Polytope which is a cube, centered at 0,0,0, with sides of 2 units.

◆ setupMask()

void osg::Polytope::setupMask ( )
inline

◆ transform()

void osg::Polytope::transform ( const osg::Matrix matrix)
inline

Transform the clipping set by matrix.

Note, this operations carries out the calculation of the inverse of the matrix since a plane must be multiplied by the inverse transposed to transform it. This makes this operation expensive. If the inverse has been already calculated elsewhere then use transformProvidingInverse() instead. See http://www.worldserver.com/turk/computergraphics/NormalTransformations.pdf

References osg::Matrixd::invert().

◆ transformProvidingInverse()

void osg::Polytope::transformProvidingInverse ( const osg::Matrix matrix)
inline

Transform the clipping set by provide a pre inverted matrix.

see transform for details.

Member Data Documentation

◆ _maskStack

MaskStack osg::Polytope::_maskStack
protected

◆ _planeList

PlaneList osg::Polytope::_planeList
protected

◆ _referenceVertexList

VertexList osg::Polytope::_referenceVertexList
protected

◆ _resultMask

ClippingMask osg::Polytope::_resultMask
protected

Referenced by operator=().


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