![]() |
The concept AABBTraits provides the geometric primitive types and methods for the class AABB_tree<AT>.
| AABBTraits::FT | |
|
Value type of the Squared_distance functor.
| |
| AABBTraits::Point_3 | |
|
Type of a 3D point.
| |
| AABBTraits::Primitive | |
|
Type of primitive.
Must be a model of the concept AABBPrimitive.
| |
| AABBTraits::Bounding_box | |
|
Bounding box type.
| |
| AABBTraits::enum Axis { X_AXIS, Y_AXIS, Z_AXIS } | |
| typedef std::pair<Point_3, Primitive::Id> | ||
| Point_and_primitive_id; | ||
| typedef std::pair<Object, Primitive::Id> | ||
| Object_and_primitive_id; | ||
During the construction of the AABB_tree, the primitives are sorted according to some comparison functions related to the x, y or z coordinate axis:
| AABBTraits::Split_primitives_along_x_axis | |
|
A functor object to split a range of primitives into two sub-ranges along the X-axis. Provides the operator:
void operator()(InputIterator first, InputIterator beyond); Iterator InputIterator must be a model of RandomAccessIterator and have Primitive as value type. The operator is used for determining the primitives assigned to the two children nodes of a given node, assuming that the goal is to split the X-dimension of the bounding box of the node. The primitives assigned to this node are passed as argument to the operator. It should modify the iterator range in such a way that its first half and its second half correspond to the two children nodes.
| |
| AABBTraits::Split_primitives_along_y_axis | |
|
A functor object to split a range of primitives into two sub-ranges along the Y-axis. See Split_primitives_along_x_axis for the detailed description.
| |
| AABBTraits::Split_primitives_along_z_axis | |
|
A functor object to split a range of primitives into two sub-ranges along the Z-axis. See Split_primitives_along_x_axis for the detailed description.
| |
| AABBTraits::Compute_bbox | |
|
A functor object to compute the bounding box of a set of primitives. Provides the operator:
Bounding_box operator()(Input_iterator begin, Input_iterator beyond); Iterator InputIterator must have Primitive as value type.
| |
| AABBTraits::Squared_distance | |
|
A functor object to compute the squared distance between two points. Provides the operator:
FT operator()(const Point_3& p, const Point_3 & q); which returns the squared distance between p and q.
| |
The following predicates are required for each type Query for which the class AABB_tree<AT> may receive an intersection detection or computation query.
The following predicates are required for each type Query for which the class AABB_tree<AT> may receive a distance query.
| AABBTraits::Compare_distance | |
|
A functor object to compute distance comparisons between the query and the nodes of the tree. Provides the operators:
bool operator()(const Query & query, const Bounding_box& box, const Point & closest); which returns true iff the bounding box is closer to query than closest is, and bool operator()(const Query & query, const Primitive & primitive, const Point & closest); which returns true iff primitive is closer to the query than closest is.
| |
| AABBTraits::Closest_point | |
|
A functor object to compute closest point from the query on a primitive. Provides the operator:
Point_3 operator()(const Query& query, const Primitive& primitive, const Point_3 & closest); which returns the closest point to query, among closest and all points of the primitive.
| |