Visualization Library

A lightweight C++ OpenGL middleware for 2D/3D graphics
[Home] [Tutorials] [All Classes] [Grouped Classes]
Public Member Functions | Protected Member Functions | Static Protected Member Functions | Protected Attributes

vl::RayIntersector Class Reference

The RayIntersector class is used to detect the intersection points between a Ray and a set of Actor[s]. More...

#include <RayIntersector.hpp>

Inheritance diagram for vl::RayIntersector:
vl::Object

List of all members.

Public Member Functions

 RayIntersector ()
const ActorCollectionactors () const
 The Actors against which the intersection test is performed.
ActorCollectionactors ()
 The Actors against which the intersection test is performed.
const Rayray () const
 The ray in world coordinates to be intersected with the actors()
void setRay (const Ray &ray)
 The ray in world coordinates to be intersected with the actors()
const Frustumfrustum () const
 The frustum in world coordinates used to cull the objects.
void setFrustum (const Frustum &frustum)
 The frustum in world coordinates used to cull the objects.
const std::vector< ref
< RayIntersection > > & 
intersections () const
 The intersection points detected by the last intersect() call sorted according to their distance (the first one is the closest).
void intersect ()
 Executes the intersection test.
void intersect (const Ray &ray, SceneManager *scene_manager)
 Computes the intersections between the given ray and the Actor[s] contained in the given scene manager.

Protected Member Functions

void intersect (Actor *act)
void intersectGeometry (Actor *act, Geometry *geom)
template<class T >
void intersectTriangle (const T &a, const T &b, const T &c, int ia, int ib, int ic, Actor *, Geometry *geom, DrawCall *prim, int prim_idx)
template<class T >
void intersectLine (const T &a, const T &b, int ia, int ib, Actor *, Geometry *geom, DrawCall *prim, int prim_idx)
template<class T >
void intersectPoint (const T &a, int ia, Actor *, Geometry *geom, DrawCall *prim, int prim_idx)

Static Protected Member Functions

static bool sorter (const ref< RayIntersection > &a, const ref< RayIntersection > &b)

Protected Attributes

Frustum mFrustum
std::vector< ref
< RayIntersection > > 
mIntersections
ref< ActorCollectionmActors
Ray mRay

Detailed Description

The RayIntersector class is used to detect the intersection points between a Ray and a set of Actor[s].

Definition at line 148 of file RayIntersector.hpp.


Constructor & Destructor Documentation

vl::RayIntersector::RayIntersector ( ) [inline]

Definition at line 153 of file RayIntersector.hpp.

References VL_DEBUG_SET_OBJECT_NAME.


Member Function Documentation

const ActorCollection* vl::RayIntersector::actors ( ) const [inline]

The Actors against which the intersection test is performed.

Definition at line 160 of file RayIntersector.hpp.

Referenced by intersect().

ActorCollection* vl::RayIntersector::actors ( ) [inline]

The Actors against which the intersection test is performed.

Definition at line 162 of file RayIntersector.hpp.

const Ray& vl::RayIntersector::ray ( ) const [inline]

The ray in world coordinates to be intersected with the actors()

Definition at line 165 of file RayIntersector.hpp.

Referenced by intersectLine(), intersectPoint(), and intersectTriangle().

void vl::RayIntersector::setRay ( const Ray ray) [inline]

The ray in world coordinates to be intersected with the actors()

Definition at line 167 of file RayIntersector.hpp.

Referenced by intersect().

const Frustum& vl::RayIntersector::frustum ( ) const [inline]

The frustum in world coordinates used to cull the objects.

Definition at line 170 of file RayIntersector.hpp.

Referenced by intersect().

void vl::RayIntersector::setFrustum ( const Frustum frustum) [inline]

The frustum in world coordinates used to cull the objects.

Definition at line 172 of file RayIntersector.hpp.

const std::vector< ref<RayIntersection> >& vl::RayIntersector::intersections ( ) const [inline]

The intersection points detected by the last intersect() call sorted according to their distance (the first one is the closest).

Definition at line 175 of file RayIntersector.hpp.

void RayIntersector::intersect ( )

Executes the intersection test.

Note:
Before calling this function the transforms and the bounding volumes of the Actor[s] to be intersected must be updated, in this order.
All the intersections are mande on the Actor's LOD level #0.

Definition at line 48 of file RayIntersector.cpp.

References actors(), vl::Frustum::cull(), frustum(), mIntersections, vl::Collection< T >::size(), and sorter().

Referenced by intersect().

void RayIntersector::intersect ( const Ray ray,
SceneManager scene_manager 
)

Computes the intersections between the given ray and the Actor[s] contained in the given scene manager.

This is an utility function equivalent to:

 intersector->actors()->clear();
 scene_manager->extractActors( *intersector->actors() );
 intersector->setRay(ray);
 intersector->intersect();

Definition at line 40 of file RayIntersector.cpp.

References actors(), vl::Collection< T >::clear(), vl::SceneManager::extractActors(), intersect(), and setRay().

static bool vl::RayIntersector::sorter ( const ref< RayIntersection > &  a,
const ref< RayIntersection > &  b 
) [inline, static, protected]

Definition at line 195 of file RayIntersector.hpp.

Referenced by intersect().

void RayIntersector::intersect ( Actor act) [protected]

Definition at line 62 of file RayIntersector.cpp.

References intersectGeometry(), and vl::Actor::lod().

void RayIntersector::intersectGeometry ( Actor act,
Geometry geom 
) [protected]
template<class T >
void RayIntersector::intersectTriangle ( const T &  a,
const T &  b,
const T &  c,
int  ia,
int  ib,
int  ic,
Actor act,
Geometry geom,
DrawCall prim,
int  prim_idx 
) [protected]
template<class T >
void RayIntersector::intersectLine ( const T &  a,
const T &  b,
int  ia,
int  ib,
Actor act,
Geometry geom,
DrawCall prim,
int  prim_idx 
) [protected]
template<class T >
void RayIntersector::intersectPoint ( const T &  a,
int  ia,
Actor act,
Geometry geom,
DrawCall prim,
int  prim_idx 
) [protected]

Member Data Documentation

Definition at line 211 of file RayIntersector.hpp.

Definition at line 212 of file RayIntersector.hpp.

Referenced by intersect(), intersectLine(), intersectPoint(), and intersectTriangle().

Definition at line 213 of file RayIntersector.hpp.

Definition at line 214 of file RayIntersector.hpp.


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

Visualization Library 2011.09.1160 Reference Documentation
Copyright 2005-2011 Michele Bosi. All rights reserved.
Updated on Thu May 2 2013 13:41:34.
Permission is granted to use this page to write and publish articles regarding Visualization Library.