Developer Documentation

Classes | Public Types | Public Member Functions | Private Member Functions | Private Attributes | List of all members
BSPImplT< BSPCore > Class Template Reference
Inheritance diagram for BSPImplT< BSPCore >:

## Classes
struct | less_pair_second
struct | NearestNeighbor
| Store nearest neighbor information. More...
struct | NearestNeighborData
| Store nearest neighbor information. More...
struct | RayCollisionData
| Store ray collide information. More...

## Public Types
typedef BSPCore::Traits | Traits
typedef BSPCore::Handle | Handle
typedef BSPCore::Point | Point
typedef BSPCore::Scalar | Scalar
typedef BSPCore::Node | Node
typedef BSPCore::Handles | Handles
typedef BSPCore::HandleIter | HandleIter
typedef std::vector< std::pair< Handle, Scalar > > | RayCollision
| Store nearest neighbor information.

## Public Member Functions
| BSPImplT (const Traits &_traits, const Scalar &_infinity=std::numeric_limits< Scalar >::infinity())
NearestNeighbor | nearest (const Point &_p) const
| Return handle of the nearest neighbor face.
RayCollision | raycollision (const Point &_p, const Point &_r) const
| intersect mesh with ray More...
RayCollision | directionalRaycollision (const Point &_p, const Point &_r) const
| intersect mesh with ray More...
RayCollision | nearestRaycollision (const Point &_p, const Point &_r) const
| intersect mesh with ray More...
template<class Callback >
void | intersectBall (const Point &_c, Scalar _r, Callback _callback) const
| intersect mesh with open ball More...

## Private Member Functions
void | _nearest (Node *_node, NearestNeighborData &_data) const
void | _raycollision_non_directional (Node *_node, RayCollisionData &_data) const
| recursive part of raycollision() More...
void | _raycollision_directional (Node *_node, RayCollisionData &_data) const
| recursive part of directionalRaycollision() More...
void | _raycollision_nearest_directional (Node *_node, RayCollisionData &_data) const
template<class Callback >
void | _intersect_ball (const Node &_node, const Point &_c, Scalar _r, Callback _callback) const

## Private Attributes
const Scalar | infinity_

## Detailed Description

### template<class BSPCore>
class BSPImplT< BSPCore >

Definition at line 64 of file BSPImplT.hh.

## Member Function Documentation

## ◆ _raycollision_directional()

template<class BSPCore >

void BSPImplT< BSPCore >::_raycollision_directional | ( | Node * | _node,
|  | RayCollisionData & | _data
| ) |  | const
| private

recursive part of directionalRaycollision()

Parameters

  _node | The current node in the tree
  _data | Data pointer, used to collect the collision information

Definition at line 229 of file BSPImplT_impl.hh.

## ◆ _raycollision_non_directional()

template<class BSPCore >

void BSPImplT< BSPCore >::_raycollision_non_directional | ( | Node * | _node,
|  | RayCollisionData & | _data
| ) |  | const
| private

recursive part of raycollision()

Parameters

  _node | The current node in the tree
  _data | Data pointer, used to collect the collision information

Definition at line 191 of file BSPImplT_impl.hh.

## ◆ directionalRaycollision()

template<class BSPCore >

BSPImplT< BSPCore >::RayCollision BSPImplT< BSPCore >::directionalRaycollision | ( | const Point & | _p,
|  | const Point & | _r
| ) |  | const

intersect mesh with ray

This function shots a ray through the mesh and collects all intersected triangles and the handle of the closest face ( directional, so the ray direction is taken into account!).

Only hits with a distance > 0.0 to the point p will be collected (_p will be skipped!)

Parameters

  _p | Start point of the ray
  _r | Ray direction

Returns
  Collision information

Definition at line 144 of file BSPImplT_impl.hh.

## ◆ intersectBall()

template<class BSPCore >
template<class Callback >

void BSPImplT< BSPCore >::intersectBall | ( | const Point & | _c,
|  | Scalar | _r,
|  | Callback | _callback
| ) |  | const

intersect mesh with open ball

All triangles that have at least one vertex (!) inside the ball are given to the Callback, triangles which have no vertex inside the ball but intersect it MAY be returned. (TODO) Each triangle can be returned up to three times, make sure to handle this, e.g. by putting the values into an std::(unordered_)set.

Parameters

  _c | Center of the ball
  _r | Radius of the ball
  _callback | Callable that accepts Handle or const Handle&, e.g. (const Handle &h) -> void

Definition at line 179 of file BSPImplT_impl.hh.

## ◆ nearestRaycollision()

template<class BSPCore >

BSPImplT< BSPCore >::RayCollision BSPImplT< BSPCore >::nearestRaycollision | ( | const Point & | _p,
|  | const Point & | _r
| ) |  | const

intersect mesh with ray

This function shots a ray through the mesh and determines the first intersected triangle and the handle of the closest face ( directional, so the ray direction is taken into account!).

Only hits with a distance > 0.0 to the point p will be collected (_p will be skipped!). Note that for compatibility reasons the return type is still a vector of collisions.

Parameters

  _p | Start point of the ray
  _r | Ray direction

Returns
  Collision information

Definition at line 162 of file BSPImplT_impl.hh.

## ◆ raycollision()

template<class BSPCore >

BSPImplT< BSPCore >::RayCollision BSPImplT< BSPCore >::raycollision | ( | const Point & | _p,
|  | const Point & | _r
| ) |  | const

intersect mesh with ray

This function shots a ray through the mesh and collects all intersected triangles and the handle of the closest face ( non-directional, so no matter of the ray direction, the closest face handle is returned in either direction)

Parameters

  _p | Start point of the ray
  _r | Ray direction

Returns
  Collision information

Definition at line 127 of file BSPImplT_impl.hh.

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

- OpenFlipper/libs_required/ACG/Geometry/bsp/BSPImplT.hh
- OpenFlipper/libs_required/ACG/Geometry/bsp/BSPImplT_impl.hh