Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updating the AABB-tree to work in both 2D and 3D #8057

Merged
merged 102 commits into from
May 15, 2024
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
006d46b
start updating the AABB-tree to work in both 2D and 3D
sloriot Mar 4, 2024
4a482dd
compatibility headers
sloriot Mar 4, 2024
2eff0eb
add missing files
sloriot Mar 4, 2024
26d40e7
rename concept
sloriot Mar 4, 2024
ae0f114
Update AABB_tree/include/CGAL/AABB_traits_3.h
sloriot Mar 4, 2024
ee187c5
use Search_traits_adapter instead of Decorated_point
sloriot Mar 4, 2024
c4a1197
AABB_traits_3 is model of Search_traits
sloriot Mar 4, 2024
32e68f8
fix concept doc
sloriot Mar 4, 2024
6453b08
more doc fixes
sloriot Mar 4, 2024
84362a2
Add Construct_projected_point_2::operator()(Segment_2,Point_2)
afabri Mar 4, 2024
26d8793
Changes so that the 2D example compiles
afabri Mar 4, 2024
a76cc2b
Typo in concept AABBGeomTraits_3
afabri Mar 4, 2024
14efb2c
whitespace
afabri Mar 4, 2024
b34c63c
Add AABBGeomTraits_2
afabri Mar 4, 2024
f0bdc2d
Make Minkowski_sum_2 work
afabri Mar 4, 2024
eb49100
Replace deprecated classes
afabri Mar 5, 2024
b70a736
Replace deprecated classes
afabri Mar 5, 2024
6c1185d
Add AABB_triangle_primitive_2
afabri Mar 5, 2024
56ac3a5
Replace deprecated classes
afabri Mar 5, 2024
911ac1a
added Construct_projected_point_2(Segment_2, Point_2)
soesau Mar 5, 2024
3f9c522
WIP: adding Construct_projected_point_2 for point onto segment and po…
soesau Mar 6, 2024
cda5d0a
adding AABB_polyline_segment_primitive_2 for Polygon_2 and PointRange
soesau Mar 6, 2024
1be8f23
Apply suggestions from code review
soesau Mar 7, 2024
6ae5c63
A _3 too much
afabri Mar 8, 2024
19725c0
Fix PMP testsuite
afabri Mar 8, 2024
37e36b8
fixed tests for point_2 on segment_2 and on triangle_2
soesau Mar 7, 2024
30cec7d
updating polyline segment primitive and example
soesau Mar 8, 2024
0e8f9c8
update doc in user manual
soesau Mar 8, 2024
83aa8cf
added AABB_indexed_triangle_primitive_2
soesau Mar 9, 2024
b02c409
polish examples
afabri Mar 12, 2024
2e4c576
Fix typo
afabri Mar 12, 2024
f9e5285
Add AABBRayIntersectionGeomTraits_2.h and fix \sa
afabri Mar 13, 2024
6e4092a
replace _3 with _2
afabri Mar 13, 2024
69ce2c1
Add 2D to the chapter title
afabri Mar 13, 2024
76dff00
Add for linking
afabri Mar 14, 2024
190608d
lowecase
afabri Mar 14, 2024
7e543dc
Add queries outside triangles
afabri Mar 14, 2024
e62f249
triangle is a not a ref
sloriot Mar 15, 2024
f231a3d
Enrich Projection_traits so that it can be used with AABB_traits_2
afabri Mar 15, 2024
4046453
bug fix
afabri Mar 15, 2024
a650d59
whitespace
afabri Mar 15, 2024
b9b1ac4
fixing search tests
soesau Mar 19, 2024
c331dd3
projection via pointmap
soesau Mar 20, 2024
7403de3
Update AABB_tree/examples/AABB_tree/AABB_indexed_triangle_2_example.cpp
soesau Mar 20, 2024
8583c4b
added wrapper to map ray/vector types from AABB_traits_2
soesau Mar 20, 2024
560e576
fix ci
soesau Mar 20, 2024
bc3e8fa
removed type wrapper
soesau Mar 21, 2024
c6ee406
undo projection traits changes
sloriot Mar 21, 2024
ee0a90b
undo more changes
sloriot Mar 21, 2024
cb21cbd
update changes
sloriot Mar 21, 2024
5706253
another forgotten revert
sloriot Mar 21, 2024
8059230
clean up
soesau Mar 21, 2024
86fe47c
re-add Construct_projected_point_2 for 2d closest point query
soesau Mar 21, 2024
00a77dc
cleaning types
soesau Mar 21, 2024
bc24d14
splitting example into declaration and test function
soesau Mar 21, 2024
c193cea
moving PointMap to end of template parameters
soesau Mar 21, 2024
0bc40dc
moving AABB_traits_base and Remove_optional into separate files
soesau Mar 21, 2024
98e5e95
license header fix
soesau Mar 21, 2024
3d87460
re-adding Point_2/3 to AABB_traits_2/3 for compatibility
soesau Mar 21, 2024
12fab6b
using functors from concept to access ray instead of using methods
soesau Mar 22, 2024
4c48945
doc fix 2D/3D
soesau Mar 22, 2024
cee30fb
cleanup traits
soesau Mar 26, 2024
65be613
removing deprecated AABB types
soesau Mar 26, 2024
f0d32fe
Merge branch 'master' into AABB_tree-2d_and_3d
soesau Mar 26, 2024
30d5ca7
added vertex point map
soesau Mar 27, 2024
d788500
doc fix
soesau Mar 27, 2024
149e63f
doc alias
sloriot Mar 28, 2024
8180546
added doc for deprecated types
soesau Mar 28, 2024
340de38
updated reference page
soesau Mar 31, 2024
3152519
Update Installation/CHANGES.md
afabri Apr 3, 2024
5edf512
Update AABB_tree/benchmark/AABB_tree/test.cpp
afabri Apr 10, 2024
1a3e163
Update AABB_tree/demo/AABB_tree/Scene.h
afabri Apr 10, 2024
99cca0f
Update AABB_tree/doc/AABB_tree/Concepts/AABBRayIntersectionGeomTraits…
afabri Apr 10, 2024
ed05a4e
Apply suggestions from code review
afabri Apr 10, 2024
f498daa
Apply suggestions from code review
afabri Apr 10, 2024
22496a8
Apply suggestions from code review
afabri Apr 10, 2024
0e9327e
fixes after review
afabri Apr 10, 2024
4015b2b
fixes after review
afabri Apr 10, 2024
5364629
fixes after review
afabri Apr 10, 2024
725c69b
fixes after review
afabri Apr 10, 2024
3d90915
fixes after review
afabri Apr 10, 2024
a393b8b
fixes after review
afabri Apr 10, 2024
f00844e
fixes after review
afabri Apr 10, 2024
aad631a
fixes after review
afabri Apr 11, 2024
78883c6
fixes after review
afabri Apr 11, 2024
3cd9368
added tests for deprecated classes/traits
soesau Apr 15, 2024
d9cd44e
AABBGeomTraits -> AABBGeomTraits_3
soesau Apr 15, 2024
69f5f23
fix comment ConstRange -> Range
soesau Apr 15, 2024
8e7b7da
fix doc
soesau Apr 15, 2024
7dd2d0b
fixed benchmark by switching to Rigid_triangle_mesh_collision_detection
soesau Apr 16, 2024
a933bf3
fix warnings and compilation issues + build maps for no caching case
sloriot Apr 16, 2024
d9ff3db
rename Polygon to Polygon_2 to avoid name collision
soesau Apr 17, 2024
bbafe6d
cleaned /sa section in primitives
soesau Apr 17, 2024
8cd4e29
update doc
soesau Apr 17, 2024
2c41686
added tests for untested aabb primitives
soesau Apr 17, 2024
0439ea2
fix warnings
soesau Apr 18, 2024
a5e7836
fix test
soesau Apr 18, 2024
ffba627
Merge remote-tracking branch 'cgal/master' into AABB_tree-2d_and_3d
soesau Apr 19, 2024
b49b2a8
update history
sloriot Apr 22, 2024
696683f
Apply suggestions from code review
soesau Apr 22, 2024
4f5bcc6
doc fixes
soesau Apr 25, 2024
6727f78
Fix tiny doc issues
MaelRL May 2, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
\ingroup PkgAABBTreeConcepts
\cgalConcept

The concept `AABBGeomTraits` defines the requirements for the first template parameter of the class
`CGAL::AABB_traits<AABBGeomTraits, AABBPrimitive>`. It provides predicates and constructors to detect
The concept `AABBGeomTraits_3` defines the requirements for the first template parameter of the class
`CGAL::AABB_traits<AABBGeomTraits_3, AABBPrimitive>`. It provides predicates and constructors to detect
and compute intersections between query objects and the primitives stored in the AABB tree.
In addition, it contains predicates and constructors to compute distances between a point query
and the primitives stored in the AABB tree.
Expand All @@ -15,13 +15,13 @@ and the primitives stored in the AABB tree.
\cgalHasModelsBare{All models of the concept `Kernel`}
\cgalHasModelsEnd

\sa `CGAL::AABB_traits<AABBGeomTraits,AABBPrimitive>`
\sa `CGAL::AABB_traits<AABBGeomTraits_3,AABBPrimitive>`
\sa `CGAL::AABB_tree<AABBTraits>`
\sa `AABBPrimitive`

*/

class AABBGeomTraits {
class AABBGeomTraits_3 {
soesau marked this conversation as resolved.
Show resolved Hide resolved
public:

/// \name Types
Expand Down Expand Up @@ -199,5 +199,5 @@ Equal_3 equal_3_object();

/// @}

}; /* end AABBGeomTraits */
}; /* end AABBGeomTraits_3 */

Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
\ingroup PkgAABBTreeConcepts
\cgalConcept

The concept `AABBRayIntersectionGeomTraits` is a refinement of the
The concept `AABBRayIntersectionGeomTraits_3` is a refinement of the
afabri marked this conversation as resolved.
Show resolved Hide resolved
concept `AABBGeomTraits`. In addition to the types required by
afabri marked this conversation as resolved.
Show resolved Hide resolved
`AABBGeomTraits` it also requires types and functors necessary to
define the Intersection_distance functor.
Expand All @@ -18,49 +18,51 @@ define the Intersection_distance functor.
\sa `AABBPrimitive`

*/
class AABBRayIntersectionGeomTraits {
class AABBRayIntersectionGeomTraits_3 {
afabri marked this conversation as resolved.
Show resolved Hide resolved
public:
/*!
Type of a 3D ray.
Type of a ray.
*/
typedef unspecified_type Ray_3;
typedef unspecified_type Ray;

/*!
Type of a 3D vector.
Type of a vector.
*/
typedef unspecified_type Vector_3;
typedef unspecified_type Vector;

/*!
A functor object to construct the source point of a ray. Provides the operator:
`Point_3 operator()(const Ray_3&);`
`Point operator()(const Ray&);`
*/
typedef unspecified_type Construct_source_3;
typedef unspecified_type Construct_source;

/*!
*/
Construct_source_3 construct_source_3_object();
Construct_source construct_source_object();

/*!
@todo update me
A model of `CartesianConstIterator3`.
*/
typedef unspecified_type Cartesian_const_iterator_3;
typedef unspecified_type Cartesian_const_iterator;

/*!
@todo update me
A model of `ConstructCartesianConstIterator3`.
*/
typedef unspecified_type Construct_cartesian_const_iterator_3;
typedef unspecified_type Construct_cartesian_const_iterator;

/*!
*/
Construct_source_3 construct_cartesian_const_iterator_3_object();
Construct_source construct_cartesian_const_iterator_object();

/*!
A functor object to construct a vector giving the direction of a ray. Provides the operator:
`Vector_3 operator()(const Ray_3&);`
`Vector operator()(const Ray&);`
*/
typedef unspecified_type Construct_vector_3;
typedef unspecified_type Construct_vector;

/*!
*/
Construct_source_3 construct_vector_3_object();
Construct_source construct_vector_object();
};
25 changes: 8 additions & 17 deletions AABB_tree/doc/AABB_tree/Concepts/AABBTraits.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ The concept `AABBTraits` provides the geometric primitive types and methods for
\cgalHasModels{CGAL::AABB_traits<AABBGeomTraits,AABBPrimitive>}
\cgalHasModelsEnd

\cgalRefines{SearchGeomTraits_3}
\cgalRefines{SearchTraits}
MaelRL marked this conversation as resolved.
Show resolved Hide resolved

\sa `CGAL::AABB_traits<AABBGeomTraits,AABBPrimitive>`
\sa `CGAL::AABB_tree<AABBTraits>`
Expand All @@ -30,7 +30,7 @@ typedef unspecified_type FT;
/*!
Type of a 3D point.
*/
typedef unspecified_type Point_3;
typedef unspecified_type Point;

/*!
Type of primitive.
Expand All @@ -43,19 +43,10 @@ Bounding box type.
*/
typedef unspecified_type Bounding_box;

/*!
enum required for axis selection
*/
enum Axis {
CGAL_X_AXIS,
CGAL_Y_AXIS,
CGAL_Z_AXIS
};

/*!
3D Point and Primitive Id type
*/
typedef std::pair<Point_3, Primitive::Id> Point_and_primitive_id;
typedef std::pair<Point, Primitive::Id> Point_and_primitive_id;

/*!
\deprecated
Expand Down Expand Up @@ -145,21 +136,21 @@ typedef unspecified_type Compare_distance;

/*!
A functor object to compute closest point from the query on a primitive. Provides the operator:
afabri marked this conversation as resolved.
Show resolved Hide resolved
`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.
`Point operator()(const Query& query, const Primitive& primitive, const Point & closest);` which returns the closest point to `query`, among `closest` and all points of the primitive.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What does "and all points of the primitive" mean?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@sloriot this is already wording from 3D and we do not really understand what is meant here,

Copy link
Member Author

@sloriot sloriot Apr 15, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

closest is the current closest point to the query point (we are in a traversal when calling this functor). "all points of the primitive..." simply means the distance between query and the primitive

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, but even with the explanation it's not clear to me and I don't know how I would implement this.

We can put it aside because it's not really what the PR is about...

Copy link
Member

@soesau soesau Apr 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"which returns the closest point to query on the primitive." Does it sound better?

"Among" does not sound like the right choice of word to me.

*/
typedef unspecified_type Closest_point;

/*!
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`.
`FT operator()(const Point& query, const Point & p);` which returns the squared distance between `p` and `q`.
*/
typedef unspecified_type Squared_distance;

/*!
A functor object to compare two points. Provides the operator:
`bool operator()(const Point_3& p, const Point_3& q);}` which returns `true` if `p` is equal to `q`.
`bool operator()(const Point& p, const Point& q);}` which returns `true` if `p` is equal to `q`.
*/
typedef unspecified_type Equal_3;
typedef unspecified_type Equal;
/// @}

/// \name Operations
Expand Down Expand Up @@ -203,7 +194,7 @@ Squared_distance squared_distance_object();
/*!
returns the equal functor.
*/
Equal_3 equal_3_object();
Equal equal_object();

/// @}

Expand Down
19 changes: 12 additions & 7 deletions AABB_tree/doc/AABB_tree/PackageDescription.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@

/*!
\addtogroup PkgAABBTreeRef
\cgalPkgDescriptionBegin{3D Fast Intersection and Distance Computation,PkgAABBTree}
\cgalPkgDescriptionBegin{Fast Intersection and Distance Computation,PkgAABBTree}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the doxyfile.in, it's "2D and 3D Fast Intersection [...]"

\cgalPkgPicture{aabb-teaser-thumb.png}
\cgalPkgSummaryBegin
\cgalPkgAuthors{Pierre Alliez, Stéphane Tayeb, and Camille Wormser}
\cgalPkgDesc{The AABB (axis-aligned bounding box) tree component offers a static data structure and algorithms to perform efficient intersection and distance queries on sets of finite 3D geometric objects.}
\cgalPkgManuals{Chapter_3D_Fast_Intersection_and_Distance_Computation,PkgAABBTreeRef}
\cgalPkgManuals{Chapter_Fast_Intersection_and_Distance_Computation,PkgAABBTreeRef}
\cgalPkgSummaryEnd
\cgalPkgShortInfoBegin
\cgalPkgSince{3.5}
Expand All @@ -25,18 +25,23 @@
\cgalCRPSection{Concepts}
- `AABBPrimitive`
- `AABBPrimitiveWithSharedData`
- `AABBGeomTraits`
- `AABBGeomTraits_2`
- `AABBGeomTraits_3`
- `AABBTraits`
- `AABBRayIntersectionGeomTraits`
- `AABBRayIntersectionGeomTraits_2`
- `AABBRayIntersectionGeomTraits_3`
- `AABBRayIntersectionTraits`

\cgalCRPSection{Classes}
- `CGAL::AABB_traits<GeomTraits,Primitive>`
- `CGAL::AABB_traits_2<GeomTraits,Primitive>`
- `CGAL::AABB_traits_3<GeomTraits,Primitive>`
- `CGAL::AABB_tree<AT>`

\cgalCRPSection{Primitives}
MaelRL marked this conversation as resolved.
Show resolved Hide resolved
- `CGAL::AABB_triangle_primitive<GeomTraits, Iterator, CacheDatum>`
- `CGAL::AABB_segment_primitive<GeomTraits, Iterator, CacheDatum>`
- `CGAL::AABB_triangle_primitive_2<GeomTraits, Iterator, CacheDatum>`
sloriot marked this conversation as resolved.
Show resolved Hide resolved
- `CGAL::AABB_segment_primitive_2<GeomTraits, Iterator, CacheDatum>`
MaelRL marked this conversation as resolved.
Show resolved Hide resolved
- `CGAL::AABB_triangle_primitive_3<GeomTraits, Iterator, CacheDatum>`
- `CGAL::AABB_segment_primitive_3<GeomTraits, Iterator, CacheDatum>`
- `CGAL::AABB_primitive<Id,ObjectPropertyMap,PointPropertyMap,ExternalPropertyMaps,CacheDatum>`
- `CGAL::AABB_halfedge_graph_segment_primitive<HalfedgeGraph,Vpm,OneHalfedgeGraphPerTree,CacheDatum>`
- `CGAL::AABB_face_graph_triangle_primitive<FaceGraph,Vpm,OneFaceGraphPerTree,CacheDatum>`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here an equivalent would be useful when we shoot rays inside a polygon.

Expand Down
2 changes: 1 addition & 1 deletion AABB_tree/doc/AABB_tree/aabb_tree.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ namespace CGAL {
/*!

\mainpage User Manual
\anchor Chapter_3D_Fast_Intersection_and_Distance_Computation
\anchor Chapter_Fast_Intersection_and_Distance_Computation
\cgalAutoToc

\authors Pierre Alliez, Stephane Tayeb, and Camille Wormser
Expand Down
85 changes: 11 additions & 74 deletions AABB_tree/include/CGAL/AABB_segment_primitive.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// Copyright (c) 2012 INRIA Sophia-Antipolis (France).
// Copyright (c) 2024 INRIA Sophia-Antipolis (France).
// All rights reserved.
//
// This file is part of CGAL (www.cgal.org).
Expand All @@ -11,91 +11,28 @@
// Author(s) : Sebastien Loriot
//


#ifndef CGAL_AABB_SEGMENT_PRIMITIVE_H_
#define CGAL_AABB_SEGMENT_PRIMITIVE_H_

#include <CGAL/license/AABB_tree.h>

#include <CGAL/disable_warnings.h>

#include <CGAL/AABB_primitive.h>
#include <iterator>
#define CGAL_DEPRECATED_HEADER "<CGAL/AABB_segment_primitive.h>"
#define CGAL_REPLACEMENT_HEADER "<CGAL/AABB_segment_primitive_3.h>"
#include <CGAL/Installation/internal/deprecation_warning.h>

namespace CGAL {
#ifndef CGAL_NO_DEPRECATED_CODE

namespace internal {
template <class GeomTraits, class Iterator>
struct Source_of_segment_3_iterator_property_map{
//classical typedefs
typedef Iterator key_type;
typedef typename GeomTraits::Point_3 value_type;
// typedef decltype(
// std::declval<typename GeomTraits::Construct_source_3>()(
// std::declval<typename GeomTraits::Segment_3>())) reference;
typedef decltype(
typename GeomTraits::Construct_source_3()(
*std::declval<key_type&>())) reference;
typedef boost::readable_property_map_tag category;
typedef Source_of_segment_3_iterator_property_map<GeomTraits, Iterator> Self;
#include <CGAL/AABB_segment_primitive_3.h>

inline friend reference
get(Self, key_type it)
{
return typename GeomTraits::Construct_source_3()( *it );
}
};
}//namespace internal
namespace CGAL{


/*!
* \ingroup PkgAABBTreeRef
* Primitive type that uses as identifier an iterator with a 3D segment as `value_type`.
* The iterator from which the primitive is built should not be invalided
* while the AABB tree holding the primitive is in use.
*
* \cgalModels{AABBPrimitive}
*
* \tparam GeomTraits is a traits class providing the nested type `Point_3` and `Segment_3`.
* It also provides the functor `Construct_source_3` that has an operator taking a `Segment_3`
* and returning its source as a type convertible to `Point_3`.
* \tparam Iterator is a model of `ForwardIterator` with its value type convertible to `GeomTraits::Segment_3`
* \tparam CacheDatum is either `CGAL::Tag_true` or `CGAL::Tag_false`. In the former case,
* the datum is stored in the primitive, while in the latter it is
* constructed on the fly to reduce the memory footprint.
* The default is `CGAL::Tag_false` (datum is not stored).
*
* \sa `AABBPrimitive`
* \sa `AABB_primitive<Id,ObjectPropertyMap,PointPropertyMapPolyhedron,ExternalPropertyMaps,CacheDatum>`
* \sa `AABB_triangle_primitive<Iterator,CacheDatum>`
* \sa `AABB_halfedge_graph_segment_primitive<HalfedgeGraph,OneHalfedgeGraphPerTree,CacheDatum>`
* \sa `AABB_face_graph_triangle_primitive<FaceGraph,OneFaceGraphPerTree,CacheDatum>`
*/
template < class GeomTraits,
class Iterator,
class CacheDatum=Tag_false>
class AABB_segment_primitive
#ifndef DOXYGEN_RUNNING
: public AABB_primitive< Iterator,
Input_iterator_property_map<Iterator>,
internal::Source_of_segment_3_iterator_property_map<GeomTraits, Iterator>,
Tag_false,
CacheDatum >
#endif
{
typedef AABB_primitive< Iterator,
Input_iterator_property_map<Iterator>,
internal::Source_of_segment_3_iterator_property_map<GeomTraits, Iterator>,
Tag_false,
CacheDatum > Base;
public:
///constructor from an iterator
AABB_segment_primitive(Iterator it) : Base(it){}
};

} // end namespace CGAL
using AABB_segment_primitive = AABB_segment_primitive_3<GeomTraits, Iterator, CacheDatum>;

#include <CGAL/enable_warnings.h>
} // CGAL namespace

#endif // CGAL_AABB_SEGMENT_PRIMITIVE_H_
#endif // CGAL_NO_DEPRECATED_CODE

#endif //CGAL_AABB_SEGMENT_PRIMITIVE_H_
Loading
Loading