osgUtil::LineSegmentIntersector Class Reference

`#include <LineSegmentIntersector>`

Inheritance diagram for osgUtil::LineSegmentIntersector:

## Classes

struct | Intersection

## Public Types

typedef std::multiset< 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

| LineSegmentIntersector (const osg::Vec3d &start, const osg::Vec3d &end)
| LineSegmentIntersector (CoordinateFrame cf, const osg::Vec3d &start, const osg::Vec3d &end, LineSegmentIntersector *parent=NULL, osgUtil::Intersector::IntersectionLimit intersectionLimit=osgUtil::Intersector::NO_LIMIT)
| LineSegmentIntersector (CoordinateFrame cf, double x, double y)
void | insertIntersection (const Intersection &intersection)
Intersections & | getIntersections ()
Intersection | getFirstIntersection ()
void | setStart (const osg::Vec3d &start)
const osg::Vec3d & | getStart () const
void | setEnd (const osg::Vec3d &end)
const osg::Vec3d & | getEnd () 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 | intersect (osgUtil::IntersectionVisitor &iv, osg::Drawable *drawable, const osg::Vec3d &s, const osg::Vec3d &e)
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

## Static Public Member Functions

static osg::Matrix | getTransformation (osgUtil::IntersectionVisitor &iv, CoordinateFrame cf)
Static Public Member Functions inherited from osg::Referenced
static OpenThreads::Mutex * | getGlobalReferencedMutex ()
static void | setDeleteHandler (DeleteHandler *handler)
static DeleteHandler * | getDeleteHandler ()

## Protected Member Functions

bool | intersects (const osg::BoundingSphere &bs)
bool | intersectAndClip (osg::Vec3d &s, osg::Vec3d &e, const osg::BoundingBox &bb)
Protected Member Functions inherited from osg::Referenced
virtual | ~Referenced ()
void | signalObserversAndDelete (bool signalDelete, bool doDelete) const
void | deleteUsingDeleteHandler () const

## Protected Attributes

LineSegmentIntersector * | _parent
osg::Vec3d | _start
osg::Vec3d | _end
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

## Detailed Description

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

## Member Typedef Documentation

## Intersections

typedef std::multiset<Intersection> osgUtil::LineSegmentIntersector::Intersections

## Constructor & Destructor Documentation

## LineSegmentIntersector() [1/3]

osgUtil::LineSegmentIntersector::LineSegmentIntersector | ( | const osg::Vec3d & | start,
|  | const osg::Vec3d & | end )

Construct a LineSegmentIntersector that runs between the specified start and end points in MODEL coordinates.

Referenced by LineSegmentIntersector().

## LineSegmentIntersector() [2/3]

osgUtil::LineSegmentIntersector::LineSegmentIntersector | ( | CoordinateFrame | cf,
|  | const osg::Vec3d & | start,
|  | const osg::Vec3d & | end,
|  | LineSegmentIntersector * | parent = NULL,
|  | osgUtil::Intersector::IntersectionLimit | intersectionLimit = osgUtil::Intersector::NO_LIMIT )

Construct a LineSegmentIntersector that runs between the specified start and end points in the specified coordinate frame.

References LineSegmentIntersector(), osgUtil::Intersector::NO_LIMIT, and NULL.

## LineSegmentIntersector() [3/3]

osgUtil::LineSegmentIntersector::LineSegmentIntersector | ( | CoordinateFrame | cf,
|  | double | x,
|  | double | y )

Convenience constructor for supporting picking in WINDOW, or PROJECTION coordinates In WINDOW coordinates creates a start value of (x,y,0) and end value of (x,y,1). In PROJECTION coordinates (clip space cube) creates a start value of (x,y,-1) and end value of (x,y,1). In VIEW and MODEL coordinates creates a start value of (x,y,0) and end value of (x,y,1).

## Member Function Documentation

## clone()

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

virtual

Implements osgUtil::Intersector.

References osgUtil::Intersector::Intersector().

## containsIntersections()

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

inline virtual

Implements osgUtil::Intersector.

References getIntersections().

## enter()

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

virtual

Implements osgUtil::Intersector.

## getEnd()

const osg::Vec3d & osgUtil::LineSegmentIntersector::getEnd | ( |  | ) | const

inline

References _end.

## getFirstIntersection()

Intersection osgUtil::LineSegmentIntersector::getFirstIntersection | ( |  | ) |

inline

References getIntersections().

## getIntersections()

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

inline

References _intersections, and _parent.

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

## getStart()

const osg::Vec3d & osgUtil::LineSegmentIntersector::getStart | ( |  | ) | const

inline

References _start.

## getTransformation()

osg::Matrix osgUtil::LineSegmentIntersector::getTransformation | ( | osgUtil::IntersectionVisitor & | iv,
|  | CoordinateFrame | cf )

static

Compute the matrix that transforms the local coordinate system of parent Intersector (usually the current intersector) into the child coordinate system of the child Intersector. cf parameter indicates the coordinate frame of parent Intersector.

## insertIntersection()

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

inline

References getIntersections().

## intersect() [1/2]

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

virtual

Implements osgUtil::Intersector.

## intersect() [2/2]

virtual void osgUtil::LineSegmentIntersector::intersect | ( | osgUtil::IntersectionVisitor & | iv,
|  | osg::Drawable * | drawable,
|  | const osg::Vec3d & | s,
|  | const osg::Vec3d & | e )

virtual

## intersectAndClip()

bool osgUtil::LineSegmentIntersector::intersectAndClip | ( | osg::Vec3d & | s,
|  | osg::Vec3d & | e,
|  | const osg::BoundingBox & | bb )

protected

## intersects()

bool osgUtil::LineSegmentIntersector::intersects | ( | const osg::BoundingSphere & | bs | ) |

protected

## leave()

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

virtual

Implements osgUtil::Intersector.

## reset()

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

virtual

Reimplemented from osgUtil::Intersector.

## setEnd()

void osgUtil::LineSegmentIntersector::setEnd | ( | const osg::Vec3d & | end | ) |

inline

References _end.

## setStart()

void osgUtil::LineSegmentIntersector::setStart | ( | const osg::Vec3d & | start | ) |

inline

References _start.

## Member Data Documentation

## _end

osg::Vec3d osgUtil::LineSegmentIntersector::_end

protected

Referenced by getEnd(), and setEnd().

## _intersections

Intersections osgUtil::LineSegmentIntersector::_intersections

protected

Referenced by getIntersections().

## _parent

LineSegmentIntersector* osgUtil::LineSegmentIntersector::_parent

protected

Referenced by getIntersections().

## _start

osg::Vec3d osgUtil::LineSegmentIntersector::_start

protected

Referenced by getStart(), and setStart().

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

- LineSegmentIntersector