|
CGAL 4.7 - 3D Fast Intersection and Distance Computation (AABB Tree)
|
The concept AABBTraits provides the geometric primitive types and methods for the class CGAL::AABB_tree<AABBTraits>.
Types | |
| enum | Axis |
| typedef unspecified_type | FT |
Value type of the Squared_distance functor. | |
| typedef unspecified_type | Point_3 |
| Type of a 3D point. | |
| typedef unspecified_type | Primitive |
| Type of primitive. More... | |
| typedef unspecified_type | Bounding_box |
| Bounding box type. | |
|
typedef std::pair< Point_3, Primitive::Id > | Point_and_primitive_id |
| typedef std::pair< Object, Primitive::Id > | Object_and_primitive_id |
| template<typename Query > | |
| using | Intersection_and_primitive_id = unspecified_type |
A nested class template providing as a pair the intersection result of a Query object and a Primitive::Datum, together with the Primitive::Id of the primitive intersected. More... | |
Splitting | |
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: | |
| typedef unspecified_type | Split_primitives_along_x_axis |
| A functor object to split a range of primitives into two sub-ranges along the X-axis. More... | |
| typedef unspecified_type | Split_primitives_along_y_axis |
| A functor object to split a range of primitives into two sub-ranges along the Y-axis. More... | |
| typedef unspecified_type | Split_primitives_along_z_axis |
| A functor object to split a range of primitives into two sub-ranges along the Z-axis. More... | |
| typedef unspecified_type | Compute_bbox |
| A functor object to compute the bounding box of a set of primitives. More... | |
Intersections | |
The following predicates are required for each type | |
| typedef unspecified_type | Do_intersect |
| A functor object to compute intersection predicates between the query and the nodes of the tree. More... | |
| typedef unspecified_type | Intersect |
| A functor object to compute the intersection of a query and a primitive. More... | |
Distance Queries | |
The following predicates are required for each type | |
| typedef unspecified_type | Compare_distance |
| A functor object to compute distance comparisons between the query and the nodes of the tree. More... | |
| typedef unspecified_type | Closest_point |
| A functor object to compute closest point from the query on a primitive. More... | |
| typedef unspecified_type | Squared_distance |
| A functor object to compute the squared distance between two points. More... | |
Operations | |
| Split_primitives_along_x_axis | split_primitives_along_x_axis_object () |
| Returns the primitive splitting functor for the X axis. | |
| Split_primitives_along_y_axis | split_primitives_along_y_axis_object () |
| Returns the primitive splitting functor for the Y axis. | |
| Split_primitives_along_z_axis | split_primitives_along_z_axis_object () |
| Returns the primitive splitting functor for the Z axis. | |
| Compute_bbox | compute_bbox_object () |
| Returns the bounding box constructor. | |
| Do_intersect | do_intersect_object () |
| Returns the intersection detection functor. | |
| Intersect | intersect_object () |
| Returns the intersection constructor. | |
| Compare_distance | compare_distance_object () |
| Returns the distance comparison functor. | |
| Closest_point | closest_point_object () |
| Returns the closest point constructor. | |
| Squared_distance | squared_distance_object () |
| Returns the squared distance functor. | |
Primitive with Shared Data | |
In addition, if | |
| template<class... T> | |
| void | set_shared_data (T...t) |
the signature of that function must be the same as the static function Primitive::construct_shared_data. More... | |
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.
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 isbool operator()(const Query & query, const Primitive & primitive, const Point & closest); which returns true iff primitive is closer to the query than closest is 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 type InputIterator must have Primitive as value type.
A functor object to compute intersection predicates between the query and the nodes of the tree.
Provides the operators:
bool operator()(const Query & q, const Bounding_box & box); which returns true iff the query intersects the bounding boxbool operator()(const Query & q, const Primitive & primitive); which returns true iff the query intersects the primitive A functor object to compute the intersection of a query and a primitive.
Provides the operator: boost::optional<Intersection_and_primitive_id<Query>::Type > operator()(const Query & q, const Primitive& primitive); which returns the intersection as a pair composed of an object and a primitive id, iff the query intersects the primitive.
Note on Backward Compatibility
Before the release 4.3 of CGAL, the return type of this function used to be boost::optional<Object_and_primitive_id>.
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 type 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.
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.
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.
A functor object to compute the squared distance between two points.
Provides the operator: FT operator()(const Point& query, const Point_3 & p); which returns the squared distance between p and q.
| void AABBTraits::set_shared_data | ( | T... | t | ) |
the signature of that function must be the same as the static function Primitive::construct_shared_data.
The type Primitive expects that the data constructed by a call to Primitive::construct_shared_data(t...) is the one given back when accessing the reference point and the datum of a primitive.