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 74 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 237 of file BSPImplT.cc.
|
private |
recursive part of raycollision()
_node | The current node in the tree |
_data | Data pointer, used to collect the collision information |
Definition at line 199 of file BSPImplT.cc.
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 152 of file BSPImplT.cc.
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 187 of file BSPImplT.cc.
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 170 of file BSPImplT.cc.
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 135 of file BSPImplT.cc.