osgUtil::PolytopeIntersector Class Reference

`#include <PolytopeIntersector>`

Inheritance diagram for osgUtil::PolytopeIntersector:

## Classes

struct | Intersection

## Public Types

enum | { POINT_PRIMITIVES = (1<<0) , LINE_PRIMITIVES = (1<<1) , TRIANGLE_PRIMITIVES = (1<<2) , ALL_PRIMITIVES = ( POINT_PRIMITIVES | LINE_PRIMITIVES | TRIANGLE_PRIMITIVES ) }
| dimension enum to specify primitive types to check. More...
typedef osg::Plane::Vec3_type | Vec3_type
typedef std::set< Intersection > | Intersections
Public Types inherited from osgUtil::Intersector
enum | CoordinateFrame { WINDOW , PROJECTION , VIEW , MODEL }
enum | IntersectionLimit { NO_LIMIT , LIMIT_ONE_PER_DRAWABLE , LIMIT_ONE , LIMIT_NEAREST }
enum | PrecisionHint { USE_DOUBLE_CALCULATIONS , USE_FLOAT_CALCULATIONS }

## Public Member Functions

| PolytopeIntersector (const osg::Polytope &polytope)
| PolytopeIntersector (CoordinateFrame cf, const osg::Polytope &polytope)
| PolytopeIntersector (CoordinateFrame cf, double xMin, double yMin, double xMax, double yMax)
osg::Polytope & | getPolytope ()
const osg::Polytope & | getPolytope () const
void | insertIntersection (const Intersection &intersection)
Intersections & | getIntersections ()
Intersection | getFirstIntersection ()
void | setPrimitiveMask (unsigned int mask)
unsigned int | getPrimitiveMask () const
void | setReferencePlane (const osg::Plane &plane)
const osg::Plane & | getReferencePlane () const
virtual Intersector * | clone (osgUtil::IntersectionVisitor &iv)
virtual bool | enter (const osg::Node &node)
virtual void | leave ()
virtual void | intersect (osgUtil::IntersectionVisitor &iv, osg::Drawable *drawable)
virtual void | reset ()
virtual bool | containsIntersections ()
Public Member Functions inherited from osgUtil::Intersector
| Intersector (CoordinateFrame cf=MODEL, IntersectionLimit il=NO_LIMIT)
void | setCoordinateFrame (CoordinateFrame cf)
CoordinateFrame | getCoordinateFrame () const
void | setIntersectionLimit (IntersectionLimit limit)
IntersectionLimit | getIntersectionLimit () const
bool | disabled () const
void | incrementDisabledCount ()
void | decrementDisabledCount ()
bool | reachedLimit ()
void | setPrecisionHint (PrecisionHint hint)
PrecisionHint | getPrecisionHint () const
Public Member Functions inherited from osg::Referenced
| Referenced ()
| Referenced (bool threadSafeRefUnref)
| Referenced (const Referenced &)
Referenced & | operator= (const Referenced &)
virtual void | setThreadSafeRefUnref (bool)
bool | getThreadSafeRefUnref () const
OpenThreads::Mutex * | getRefMutex () const
int | ref () const
int | unref () const
int | unref_nodelete () const
int | referenceCount () const
ObserverSet * | getObserverSet () const
ObserverSet * | getOrCreateObserverSet () const
void | addObserver (Observer *observer) const
void | removeObserver (Observer *observer) const

## Protected Attributes

PolytopeIntersector * | _parent
osg::Polytope | _polytope
unsigned int | _primitiveMask
| mask which dimensions should be checked
osg::Plane | _referencePlane
| plane to use for sorting intersections
Intersections | _intersections
Protected Attributes inherited from osgUtil::Intersector
CoordinateFrame | _coordinateFrame
IntersectionLimit | _intersectionLimit
unsigned int | _disabledCount
PrecisionHint | _precisionHint
Protected Attributes inherited from osg::Referenced
OpenThreads::AtomicPtr | _observerSet
OpenThreads::Atomic | _refCount

## Additional Inherited Members

Static Public Member Functions inherited from osg::Referenced
static OpenThreads::Mutex * | getGlobalReferencedMutex ()
static void | setDeleteHandler (DeleteHandler *handler)
static DeleteHandler * | getDeleteHandler ()
Protected Member Functions inherited from osg::Referenced
virtual | ~Referenced ()
void | signalObserversAndDelete (bool signalDelete, bool doDelete) const
void | deleteUsingDeleteHandler () const

## Detailed Description

Concrete class for implementing polytope intersections with the scene graph. To be used in conjunction with IntersectionVisitor.

## Member Typedef Documentation

## Intersections

typedef std::set<Intersection> osgUtil::PolytopeIntersector::Intersections

## Vec3_type

typedef osg::Plane::Vec3_type osgUtil::PolytopeIntersector::Vec3_type

## Member Enumeration Documentation

## anonymous enum

anonymous enum

dimension enum to specify primitive types to check.

Enumerator
POINT_PRIMITIVES |
LINE_PRIMITIVES | check for points
TRIANGLE_PRIMITIVES | check for lines
ALL_PRIMITIVES | check for triangles and other primitives like quad, polygons that can be decomposed into triangles

## Constructor & Destructor Documentation

## PolytopeIntersector() [1/3]

osgUtil::PolytopeIntersector::PolytopeIntersector | ( | const osg::Polytope & | polytope | ) |

Construct a PolytopeIntersector using specified polytope in MODEL coordinates.

## PolytopeIntersector() [2/3]

osgUtil::PolytopeIntersector::PolytopeIntersector | ( | CoordinateFrame | cf,
|  | const osg::Polytope & | polytope )

Construct a PolytopeIntersector using specified polytope in specified coordinate frame.

## PolytopeIntersector() [3/3]

osgUtil::PolytopeIntersector::PolytopeIntersector | ( | CoordinateFrame | cf,
|  | double | xMin,
|  | double | yMin,
|  | double | xMax,
|  | double | yMax )

Convenience constructor for supporting picking in WINDOW, or PROJECTION coordinates In WINDOW coordinates (clip space cube) creates a five sided polytope box that has a front face at 0.0 and sides around box xMin, yMin, xMax, yMax. In PROJECTION coordinates (clip space cube) creates a five sided polytope box that has a front face at -1 and sides around box xMin, yMin, xMax, yMax. In VIEW and MODEL coordinates (clip space cube) creates a five sided polytope box that has a front face at 0.0 and sides around box xMin, yMin, xMax, yMax.

## Member Function Documentation

## clone()

virtual Intersector * osgUtil::PolytopeIntersector::clone | ( | osgUtil::IntersectionVisitor & | iv | ) |

virtual

Implements osgUtil::Intersector.

References osgUtil::Intersector::Intersector().

## containsIntersections()

virtual bool osgUtil::PolytopeIntersector::containsIntersections | ( |  | ) |

inline virtual

Implements osgUtil::Intersector.

References getIntersections().

## enter()

virtual bool osgUtil::PolytopeIntersector::enter | ( | const osg::Node & | node | ) |

virtual

Implements osgUtil::Intersector.

## getFirstIntersection()

Intersection osgUtil::PolytopeIntersector::getFirstIntersection | ( |  | ) |

inline

References getIntersections().

## getIntersections()

Intersections & osgUtil::PolytopeIntersector::getIntersections | ( |  | ) |

inline

References _intersections, and _parent.

Referenced by containsIntersections(), getFirstIntersection(), and insertIntersection().

## getPolytope() [1/2]

osg::Polytope & osgUtil::PolytopeIntersector::getPolytope | ( |  | ) |

inline

Get the Polytope used by the intersector.

References _polytope.

## getPolytope() [2/2]

const osg::Polytope & osgUtil::PolytopeIntersector::getPolytope | ( |  | ) | const

inline

Get the const Polytope used by the intersector.

References _polytope.

## getPrimitiveMask()

unsigned int osgUtil::PolytopeIntersector::getPrimitiveMask | ( |  | ) | const

inline

Get which Primitives should be tested for intersections.

References _primitiveMask.

## getReferencePlane()

const osg::Plane & osgUtil::PolytopeIntersector::getReferencePlane | ( |  | ) | const

inline

References _referencePlane.

## insertIntersection()

void osgUtil::PolytopeIntersector::insertIntersection | ( | const Intersection & | intersection | ) |

inline

References getIntersections().

## intersect()

virtual void osgUtil::PolytopeIntersector::intersect | ( | osgUtil::IntersectionVisitor & | iv,
|  | osg::Drawable * | drawable )

virtual

Implements osgUtil::Intersector.

## leave()

virtual void osgUtil::PolytopeIntersector::leave | ( |  | ) |

virtual

Implements osgUtil::Intersector.

## reset()

virtual void osgUtil::PolytopeIntersector::reset | ( |  | ) |

virtual

Reimplemented from osgUtil::Intersector.

## setPrimitiveMask()

void osgUtil::PolytopeIntersector::setPrimitiveMask | ( | unsigned int | mask | ) |

inline

Set which Primitives should be tested for intersections.

References _primitiveMask.

## setReferencePlane()

void osgUtil::PolytopeIntersector::setReferencePlane | ( | const osg::Plane & | plane | ) |

inline

set the plane used to sort the intersections. The intersections are sorted by the distance of the localIntersectionPoint and the reference plane. The default for the reference plane is the last plane of the polytope.

References _referencePlane.

## Member Data Documentation

## _intersections

Intersections osgUtil::PolytopeIntersector::_intersections

protected

Referenced by getIntersections().

## _parent

PolytopeIntersector* osgUtil::PolytopeIntersector::_parent

protected

Referenced by getIntersections().

## _polytope

osg::Polytope osgUtil::PolytopeIntersector::_polytope

protected

Referenced by getPolytope(), and getPolytope().

## _primitiveMask

unsigned int osgUtil::PolytopeIntersector::_primitiveMask

protected

mask which dimensions should be checked

Referenced by getPrimitiveMask(), and setPrimitiveMask().

## _referencePlane

osg::Plane osgUtil::PolytopeIntersector::_referencePlane

protected

plane to use for sorting intersections

Referenced by getReferencePlane(), and setReferencePlane().

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

- PolytopeIntersector