Visualization Library v1.0.3

A lightweight C++ OpenGL middleware for 2D/3D graphics

VL     Star     Watch     Fork     Issue

[Download] [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)

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 133 of file RayIntersector.hpp.


Constructor & Destructor Documentation

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

Definition at line 138 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 145 of file RayIntersector.hpp.

Referenced by intersect().

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

The Actors against which the intersection test is performed.

Definition at line 147 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 150 of file RayIntersector.hpp.

Referenced by intersectTriangle().

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

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

Definition at line 152 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 155 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 157 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 160 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 46 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 38 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 180 of file RayIntersector.hpp.

Referenced by intersect().

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

Definition at line 60 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]

Member Data Documentation

Definition at line 190 of file RayIntersector.hpp.

Definition at line 191 of file RayIntersector.hpp.

Referenced by intersect(), and intersectTriangle().

Definition at line 192 of file RayIntersector.hpp.

Definition at line 193 of file RayIntersector.hpp.


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

Visualization Library v1.0.3 Reference Documentation
Copyright Michele Bosi. All rights reserved.
Updated on Tue Feb 7 2017 00:55:11.
Permission is granted to use this page to write and publish articles regarding Visualization Library.