OSG  3.4.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Public Types | Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
osgSim::ElevationSlice Class Reference

#include <ElevationSlice.h>

Collaboration diagram for osgSim::ElevationSlice:
Collaboration graph
[legend]

Public Types

typedef std::vector< osg::Vec3dVec3dList
 
typedef std::pair< double, double > DistanceHeight
 
typedef std::vector
< DistanceHeight
DistanceHeightList
 

Public Member Functions

 ElevationSlice ()
 
void setStartPoint (const osg::Vec3d &startPoint)
 
const osg::Vec3dgetStartPoint () const
 
void setEndPoint (const osg::Vec3d &endPoint)
 
const osg::Vec3dgetEndPoint () const
 
const Vec3dListgetIntersections () const
 
const DistanceHeightListgetDistanceHeightIntersections () const
 
void computeIntersections (osg::Node *scene, osg::Node::NodeMask traversalMask=0xffffffff)
 
void clearDatabaseCache ()
 
void setDatabaseCacheReadCallback (DatabaseCacheReadCallback *dcrc)
 
DatabaseCacheReadCallbackgetDatabaseCacheReadCallback ()
 

Static Public Member Functions

static Vec3dList computeElevationSlice (osg::Node *scene, const osg::Vec3d &startPoint, const osg::Vec3d &endPoint, osg::Node::NodeMask traversalMask=0xffffffff)
 

Protected Attributes

osg::Vec3d _startPoint
 
osg::Vec3d _endPoint
 
Vec3dList _intersections
 
DistanceHeightList _distanceHeightIntersections
 
osg::ref_ptr
< DatabaseCacheReadCallback
_dcrc
 
osgUtil::IntersectionVisitor _intersectionVisitor
 

Detailed Description

Helper class for setting up and acquiring height above terrain intersections with terrain. By default assigns a osgSim::DatabaseCacheReadCallback that enables automatic loading of external PagedLOD tiles to ensure that the highest level of detail is used in intersections. This automatic loading of tiles is done by the intersection traversal that is done within the computeIntersections(..) method, so can result in long intersection times when external tiles have to be loaded. The external loading of tiles can be disabled by removing the read callback, this is done by calling the setDatabaseCacheReadCallback(DatabaseCacheReadCallback*) method with a value of 0.

Definition at line 32 of file ElevationSlice.h.

Member Typedef Documentation

typedef std::pair<double,double> osgSim::ElevationSlice::DistanceHeight

Definition at line 57 of file ElevationSlice.h.

Definition at line 58 of file ElevationSlice.h.

Definition at line 52 of file ElevationSlice.h.

Constructor & Destructor Documentation

osgSim::ElevationSlice::ElevationSlice ( )

Member Function Documentation

void osgSim::ElevationSlice::clearDatabaseCache ( )
inline

Clear the database cache.

Definition at line 75 of file ElevationSlice.h.

static Vec3dList osgSim::ElevationSlice::computeElevationSlice ( osg::Node scene,
const osg::Vec3d startPoint,
const osg::Vec3d endPoint,
osg::Node::NodeMask  traversalMask = 0xffffffff 
)
static

Compute the vertical distance between the specified scene graph and a single HAT point.

void osgSim::ElevationSlice::computeIntersections ( osg::Node scene,
osg::Node::NodeMask  traversalMask = 0xffffffff 
)

Compute the intersections with the specified scene graph, the results are stored in vectors of Vec3d. Note, if the topmost node is a CoordinateSystemNode then the input points are assumed to be geocentric, with the up vector defined by the EllipsoidModel attached to the CoordinateSystemNode. If the topmost node is not a CoordinateSystemNode then a local coordinates frame is assumed, with a local up vector.

DatabaseCacheReadCallback* osgSim::ElevationSlice::getDatabaseCacheReadCallback ( )
inline

Get the ReadCallback that does the reading of external PagedLOD models, and caching of loaded subgraphs.

Definition at line 83 of file ElevationSlice.h.

const DistanceHeightList& osgSim::ElevationSlice::getDistanceHeightIntersections ( ) const
inline

Get the intersections in the form a vector of pair<double,double> representing distance along the slice and height.

Definition at line 61 of file ElevationSlice.h.

const osg::Vec3d& osgSim::ElevationSlice::getEndPoint ( ) const
inline

Get the end point of the slice.

Definition at line 49 of file ElevationSlice.h.

const Vec3dList& osgSim::ElevationSlice::getIntersections ( ) const
inline

Get the intersections in the form of a vector of Vec3d.

Definition at line 55 of file ElevationSlice.h.

const osg::Vec3d& osgSim::ElevationSlice::getStartPoint ( ) const
inline

Get the start point of the slice.

Definition at line 43 of file ElevationSlice.h.

void osgSim::ElevationSlice::setDatabaseCacheReadCallback ( DatabaseCacheReadCallback dcrc)

Set the ReadCallback that does the reading of external PagedLOD models, and caching of loaded subgraphs. Note, if you have multiple LineOfSight or ElevationSlice objects in use at one time then you should share a single DatabaseCacheReadCallback between all of them.

void osgSim::ElevationSlice::setEndPoint ( const osg::Vec3d endPoint)
inline

Set the end point of the slice.

Definition at line 46 of file ElevationSlice.h.

void osgSim::ElevationSlice::setStartPoint ( const osg::Vec3d startPoint)
inline

Set the start point of the slice.

Definition at line 40 of file ElevationSlice.h.

Member Data Documentation

osg::ref_ptr<DatabaseCacheReadCallback> osgSim::ElevationSlice::_dcrc
protected

Definition at line 93 of file ElevationSlice.h.

DistanceHeightList osgSim::ElevationSlice::_distanceHeightIntersections
protected

Definition at line 91 of file ElevationSlice.h.

osg::Vec3d osgSim::ElevationSlice::_endPoint
protected

Definition at line 89 of file ElevationSlice.h.

Vec3dList osgSim::ElevationSlice::_intersections
protected

Definition at line 90 of file ElevationSlice.h.

osgUtil::IntersectionVisitor osgSim::ElevationSlice::_intersectionVisitor
protected

Definition at line 94 of file ElevationSlice.h.

osg::Vec3d osgSim::ElevationSlice::_startPoint
protected

Definition at line 88 of file ElevationSlice.h.


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