Developer Documentation
|
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_ |
Definition at line 64 of file BSPImplT.hh.
|
private |
recursive part of directionalRaycollision()
_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.
|
private |
recursive part of raycollision()
_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.
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!)
_p | Start point of the ray |
_r | Ray direction |
Definition at line 144 of file BSPImplT_impl.hh.
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.
_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.
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.
_p | Start point of the ray |
_r | Ray direction |
Definition at line 162 of file BSPImplT_impl.hh.
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)
_p | Start point of the ray |
_r | Ray direction |
Definition at line 127 of file BSPImplT_impl.hh.