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

[WIP] CGAL 3D conforming constrained Delaunay triangulation #8186

Draft
wants to merge 462 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
462 commits
Select commit Hold shift + click to select a range
bf2948d
unless CGAL_TRIANGULATION_CHECK_EXPENSIVE
lrineau Sep 26, 2023
8a82fc5
remove unused variable
lrineau Sep 26, 2023
713217a
fix a bug in dimension 2
lrineau Sep 26, 2023
dbbf8cb
oformat is in CGAL::IO::
lrineau Sep 26, 2023
5ab8db3
fix a warning
lrineau Sep 26, 2023
ad83ce5
fix code when CGAL_NDEBUG or NDEBUG is defined
lrineau Sep 26, 2023
4998da4
add another selection of HexiCosPot
lrineau Sep 26, 2023
bd4d711
Allow to open more that OFF files
lrineau Sep 28, 2023
acd5059
Add 4291 data sets from Thingi10K
lrineau Sep 28, 2023
01d64ff
with --ratio 0.1, iterate on all buckets in order
lrineau Sep 29, 2023
4829813
allow the compilation with Epeck
lrineau Sep 29, 2023
f9d4c34
remove m.collect_garbage();
lrineau Sep 29, 2023
780f1ee
fix another bug in construct_Steiner_point
lrineau Oct 2, 2023
3cf28af
Replace ERROR by NOTE because those were not errors
lrineau Oct 2, 2023
9e305fc
--ratio: Adjust nb_of_bucket when only one face is skipped
lrineau Oct 2, 2023
c6545a0
reimplement brute_force_border_3_of_region
lrineau Oct 4, 2023
f9f6195
fix typo
lrineau Oct 13, 2023
b8e8d74
fix the number of added vertices in a cavity
lrineau Oct 13, 2023
87be4b4
factorize the handling of options
lrineau Oct 16, 2023
f0ae047
more options
lrineau Oct 16, 2023
8dccbf8
add another option
lrineau Oct 17, 2023
0d71b70
extra assertion
lrineau Oct 17, 2023
7999785
commit more debug code
lrineau Oct 17, 2023
a299c4f
Adapt triangulate_cavity
lrineau Oct 24, 2023
8281b4f
make Unique_hash_map movable
lrineau Nov 6, 2023
91b671b
Merge remote-tracking branch 'cgal/master' into Triangulation_3-CDT_3…
lrineau Nov 7, 2023
c083d54
Extract map_cavity_vertices_to_ambient_vertices
lrineau Nov 8, 2023
1d44085
`triangulate_cavity` is a fct without side effect
lrineau Nov 8, 2023
679d8a3
use std::invoke (C++17) for IILE
lrineau Nov 9, 2023
55f1d8c
result of the review with Jane
lrineau Nov 9, 2023
bf92180
`inner_map_of_cavity` uses `this` as const and nothing else
lrineau Nov 9, 2023
a42d218
more a function
lrineau Nov 9, 2023
7c924b2
verify that CDT_3 works also with Epeck
lrineau Nov 10, 2023
fc0e564
fix typos (detected by spell-checker)
lrineau Nov 10, 2023
5184b4e
extract the lambda register_facet_to_be_constrained
lrineau Nov 11, 2023
1dc941e
fix a bug?
lrineau Nov 11, 2023
cdb231c
Extract inner_map_of_cavity to a member function
lrineau Nov 11, 2023
c03df42
WIP: add insert_in_cdt_3
lrineau Nov 11, 2023
859c8a2
WIP : fix
lrineau Nov 14, 2023
374e152
WIP: more fix
lrineau Nov 14, 2023
783f687
another fix
lrineau Nov 14, 2023
6505fdd
insert_in_CDT_3: mirror facets directly
lrineau Nov 16, 2023
183785d
construct_cavities: turn into vectors
lrineau Nov 16, 2023
d305ba6
simplify those lines
lrineau Nov 16, 2023
dc14137
[_, inserter] = set.insert... Use .second instead
lrineau Nov 16, 2023
2112ab4
Merge remote-tracking branch 'cgal/master' into Triangulation_3-CDT_3…
lrineau Nov 16, 2023
fd498f1
more debug messages
lrineau Nov 28, 2023
62cd0d4
Thingi10k: add a way to run a test case with merge_facets only
lrineau Nov 30, 2023
aece2c2
detect small distances
lrineau Dec 5, 2023
615d654
Better labels for Thingi10K test cases
lrineau Dec 5, 2023
c43e65e
backup this script change
lrineau Dec 6, 2023
4ec2308
fix the assertion `v->nb_of_incident_constraints < 0`
lrineau Dec 7, 2023
e56263e
remove a spurious assertion
lrineau Dec 8, 2023
9d7f12a
add options to set the epsilon values (in particular to make them 0)
lrineau Dec 13, 2023
6fbb7cf
add `--failure-expression`
lrineau Dec 13, 2023
08ad1da
reduce timings in cases of PLC errors
lrineau Dec 13, 2023
0343a30
add timing displays and a --quiet option
lrineau Dec 13, 2023
2524925
fix indentation
lrineau Dec 13, 2023
66cd72b
port back to C++17
lrineau Dec 13, 2023
932a9c3
CDT_vb_3: regroup data members
lrineau Jan 4, 2024
a320ef9
indentation
lrineau Jan 4, 2024
283c027
missing const
lrineau Jan 4, 2024
88c74e3
minor improvement of debug messages
lrineau Jan 4, 2024
a3c0fdc
factorize a lambda function
lrineau Jan 4, 2024
f2253d2
dump region in case of a fatal PLC error
lrineau Jan 4, 2024
3026729
extract function encroaching_vertices(va, vb)
lrineau Jan 4, 2024
4f7a2bc
improve diagnostic "Min distance between vertices"
lrineau Jan 4, 2024
9efbb31
Add diagnostic "constrained segment is too close"
lrineau Jan 4, 2024
6739b1f
restore compilation with Epeck
lrineau Jan 4, 2024
9fc9964
fix the CDT testsuite
lrineau Jan 4, 2024
9d34807
fix a regression in speed
lrineau Jan 4, 2024
c01fd12
improve the code reproducibility
lrineau Jan 5, 2024
4dfb811
change the loop pattern when there are PLC errors
lrineau Jan 5, 2024
40ed1e8
faster visitor implementation during the conforming
lrineau Jan 9, 2024
063027e
cosmetic change
lrineau Jan 9, 2024
de636fd
Add timestamps to base classes
lrineau Jan 14, 2024
2b45778
vertices_in_constraint_end is bidirectional
lrineau Jan 14, 2024
2f92e1c
new way to output after conforming
lrineau Jan 15, 2024
6d44bf2
oformat(x, tag) passed the tag value to the Output_rep
lrineau Jan 15, 2024
f4e8971
fix Compare_angle_3 with six points
lrineau Jan 16, 2024
efb70c1
add comments on Compare_angle_3
lrineau Jan 16, 2024
faae0c9
Add With_offset_tag
lrineau Jan 16, 2024
300f61f
new useful debugging messages
lrineau Jan 16, 2024
f4fd30a
fix a compilation error with C++<20
lrineau Jan 22, 2024
f6f6cf1
use region growing to detect almost coplanar patches
lrineau Jan 22, 2024
d89c6f7
re-add the merging of exactly coplanar faces
lrineau Jan 25, 2024
b7b0337
fix a bug in the dichotomy process to minimize a buggy input
lrineau Jan 25, 2024
b673972
add an cmdline option to debug Steiner points
lrineau Jan 26, 2024
9ed9b49
debug debugging of missing faces from cavities
lrineau Jan 26, 2024
7522015
rename to polygon_border_vertices
lrineau Jan 29, 2024
9cec069
proper class encapsulation for CDT_vb_3
lrineau Jan 30, 2024
69a9e21
cosmetic renaming of a parameter (during code review with Jane)
lrineau Jan 30, 2024
7dbdf99
fix io_signature issue
lrineau Jan 30, 2024
b41dd16
Add debug_missing_region() at runtime
lrineau Jan 30, 2024
eea89c6
partial fix for Thingi 243014
lrineau Jan 30, 2024
eabe087
better debugging message
lrineau Jan 31, 2024
87f43d8
add a test case
lrineau Jan 31, 2024
10b07bb
fix my previous commit about Thingi 243014
lrineau Jan 31, 2024
0abd88c
"merge facets" is not by default
lrineau Jan 31, 2024
3b34bcc
fix for Thingi 243014.stl
lrineau Jan 31, 2024
37048be
Add debug_regions(bool)
lrineau Feb 3, 2024
29a63e4
add --no-repair
lrineau Feb 3, 2024
484a284
fix a bug: use a real marker
lrineau Feb 3, 2024
477be75
better handling of polygon vertices markers
lrineau Feb 9, 2024
58c3e3c
small fix for CDT_3 ctest
lrineau Feb 9, 2024
d127192
WIP: cells markers
lrineau Feb 9, 2024
836dabf
rename from set_Steiner_vertex_on_face to set_Steiner_vertex_in_face
lrineau Feb 9, 2024
30e4d3b
wip
lrineau Feb 11, 2024
f649b20
move With_point_and_info_tag to Compact_container.h
lrineau Feb 13, 2024
a397f73
new debug flag
lrineau Feb 13, 2024
7952676
new markers for vertices
lrineau Feb 13, 2024
68762f5
add option --use-new-cavity-algorithm
lrineau Feb 13, 2024
a660bb3
small bug fix
lrineau Feb 13, 2024
eb2e346
add new test cases (from previous fixed bugs)
lrineau Feb 14, 2024
4a9210a
use a border edge of the region to orient the cavity (above/below)
lrineau Feb 14, 2024
6af6bae
add another data ste
lrineau Feb 15, 2024
877c575
stupid bug
lrineau Feb 15, 2024
228093b
fix the assertions
lrineau Feb 15, 2024
a669b96
remove debugging lines
lrineau Feb 15, 2024
15a6232
better debugging with --debug--regions
lrineau Feb 15, 2024
71f0159
add --debug-validity
lrineau Feb 15, 2024
c69bd87
documentation options
lrineau Feb 20, 2024
dd7ea77
add a data set that is not currently working
lrineau Feb 20, 2024
083dbf7
fix the timestamp system
lrineau Feb 21, 2024
0cc4f6e
simpler timestamp system
lrineau Feb 22, 2024
2a3b5f0
fix for data/106884-min1.off
lrineau Feb 22, 2024
5a56273
TDS::is_valid add a check of number_of_cells()
lrineau Feb 22, 2024
c23188d
T_3:::copy_triangulation_into_hole postpone *cit++
lrineau Feb 22, 2024
695b661
minor debug modifications
lrineau Feb 22, 2024
f23bbab
assert/CGAL_assertion
lrineau Feb 23, 2024
ec343d2
tweaks of CMake
lrineau Feb 23, 2024
9afcc20
two new buggy data sets
lrineau Feb 26, 2024
13ee2c9
More debug message in cdt.is_valid(true)
lrineau Feb 27, 2024
208019d
fix for error_mesh-p_not_equal_0-min2
lrineau Feb 27, 2024
6b3cf57
fix for data/113344-min3.off
lrineau Mar 1, 2024
d6affb0
fix for 90224.stl
lrineau Mar 4, 2024
8c5b03b
fix a debug message
lrineau Mar 6, 2024
2655765
change the distance check between constraint segment and vertex
lrineau Mar 6, 2024
7705aa3
fix the almost-coplanar regions detector
lrineau Mar 7, 2024
24c23c9
new options/criteria to choose which facets to merge
lrineau Mar 10, 2024
4e59d9d
new debug output: all borders of merged facets
lrineau Mar 10, 2024
866ece9
5.1 degrees seems right
lrineau Mar 13, 2024
bcb34a1
introduce Intel ITT for debug interaction with vtune
lrineau Mar 18, 2024
0869b41
optimizations about vtuning
lrineau Mar 18, 2024
a5c7297
reimplement does_first_triangle_intersect_second_triangle_interior
lrineau Mar 22, 2024
7457923
cleanup
lrineau Mar 22, 2024
827461b
WIP work-in-progress
lrineau Apr 3, 2024
c96e576
fix
lrineau Apr 3, 2024
bc5dd0a
protect debug code with a flag
lrineau Apr 4, 2024
71adadc
small optimization: use a Delaunay tr_3 instead of a CDT_3 for the ca…
lrineau Apr 4, 2024
7e8d4df
fix command line parameters
lrineau Apr 4, 2024
8e830fd
add flag --use-finite-edges-map
lrineau Apr 4, 2024
05c882f
final fix for `is_edge` with the hash set
lrineau Apr 5, 2024
1fd92e2
patch to speed up `incident_cells` in 3D
lrineau Apr 9, 2024
af90c7b
make_sorted_pair, for any aggregate with 2 members
lrineau Apr 10, 2024
3177352
vector<hash_set> instead of a hash_set of pairs
lrineau Apr 10, 2024
fc66bd9
minor tweak with constexpr in CT_2
lrineau Apr 11, 2024
aeba1b4
speed-up is_edge with function_output_iterator.
lrineau Apr 11, 2024
0d231ca
speed up incident_cells_threadsafe
lrineau Apr 11, 2024
25e9485
add CGAL::Scope_exit
lrineau Apr 11, 2024
c46fe96
reimplement TDS_3::is_edge (speed-up by a factor 7)
lrineau Apr 11, 2024
7f99d18
use Scope_exit
lrineau Apr 11, 2024
27591ab
use boost::unordered_flat_map to optimize Polyline_constraint_hierarc…
lrineau Apr 15, 2024
10d8a23
fix CC time_stamper
lrineau Apr 22, 2024
52a8343
fix oformat
lrineau Apr 22, 2024
85abe7b
fix missing include of <cstdint.h>
lrineau Apr 22, 2024
0db0d5b
add Orientation_3(Point_3, Point_3, Point_3, Vector_3)
lrineau Apr 22, 2024
31cec7e
make Circulator_from_container somewhat compatible with C++20 ranges
lrineau Apr 24, 2024
03a497e
remove a possible filter failure, when the target is a vertex
lrineau Apr 24, 2024
062b828
reduce symbols names
lrineau Apr 24, 2024
428c0f4
do not reinsert all vertices several times
lrineau Apr 24, 2024
77a2f15
reduce filter failures
lrineau Apr 24, 2024
1473923
add support for dumping surface mesh after merging facets
lrineau Apr 24, 2024
d31957f
Merge remote-tracking branch 'cgal/master' into Triangulation_3-CDT_3…
lrineau Apr 24, 2024
d5ac8eb
Revert "add Orientation_3(Point_3, Point_3, Point_3, Vector_3)"
lrineau Apr 24, 2024
28e1600
add CGAL_CAN_USE_CXX20_FORMAT macro for <format> support (C++20)
lrineau Apr 24, 2024
7a714de
remove CGAL::cpp17, useless now that CGAL requires C++17
lrineau Apr 25, 2024
4dbed03
Merge remote-tracking branch 'cgal/master' into Triangulation_3-CDT_3…
lrineau Apr 26, 2024
0bc4257
fix duplicate include <version>
lrineau Apr 26, 2024
90182eb
remove extra include
lrineau Apr 26, 2024
017c4ec
indentation
lrineau Apr 26, 2024
d655991
Merge branch 'CGAL-improvement_from_CDT_3_branch-GF' into Triangulati…
lrineau Apr 26, 2024
b6f95bf
Constrained_triangulation_3: add a skeleton of package and documentation
lrineau May 3, 2024
ad57aaa
add named parameters to Constrained_Delaunay_triangulation_3 constructor
lrineau May 5, 2024
69b6de3
wip for CDT_3 Cell/Vertex base concepts
lrineau May 5, 2024
42be242
new small icon for CDT_3 (working draft)
lrineau May 6, 2024
ee796e8
fix SPDX-License-Identifier headers
lrineau May 6, 2024
4cc32c8
fix groups
sloriot May 6, 2024
1dbc084
doc: fix links to the enums
lrineau May 6, 2024
f9af001
add <CGAL/license/Constrained_triangulation_3.h>
lrineau May 6, 2024
2114b00
add Constrained_Delaunay_triangulation_vertex_data_3
lrineau May 6, 2024
af30c32
add doc for Constrained_Delaunay_triangulation_cell_data_3
lrineau May 6, 2024
acaebc3
add Doxygen groups
lrineau May 6, 2024
eeade15
mv new header files from T_3/include to CT_3/include
lrineau May 6, 2024
6bacc13
wip on the compatibility with Tet remeshing
lrineau May 8, 2024
c10dcf7
allow to call save_binary_file on non-C3t3 type (like a CDT_3)
lrineau Jun 10, 2024
93fd966
use boost::unordered_flat_map to optimize Polyline_constraint_hierarc…
lrineau Apr 15, 2024
82b5359
Mesh_2: sort the sequence tr.subconstraints_begin(), tr.subconstraint…
lrineau Jun 13, 2024
68f4471
Implement Constrained_Delaunay_triangulation_3 and *_impl
lrineau Jun 19, 2024
a65df5b
CDT_vertex_base_3 no longer derives from Constrained_Delaunay_triangu…
lrineau Jun 19, 2024
c04a2d2
move Constrained_Delaunay_triangulation_vertex_base_3 in its header
lrineau Jun 19, 2024
e3d399d
implement Constrained_Delaunay_triangulation_cell_data_3
lrineau Jun 19, 2024
6fbd630
add an example, and try to use C++17 (not C++20)
lrineau Jun 20, 2024
4b50321
new documentation
lrineau Jun 20, 2024
d6b9aaa
[WIP] add an example with tet remeshing (does not work, yet)
lrineau Jun 20, 2024
5303df4
remove this file entirely from Doxygen's scope
lrineau Jun 20, 2024
a671ba6
almost fix the example with tet remeshing
lrineau Jun 20, 2024
244c49c
add a precondition: mesh without self-intersection
lrineau Jun 21, 2024
e50f7fd
add default_constrained_triangulation_3_t
lrineau Jun 21, 2024
474fc3e
document two functions in Constrained_Delaunay_triangulation_cell_data_3
lrineau Jun 21, 2024
c4c1898
fix the example
lrineau Jun 21, 2024
c31af54
reorganize and remove debug messages
lrineau Jun 21, 2024
12d333c
Fix the concept SimplicialMeshVertexBase_3
lrineau Jun 21, 2024
3325bd6
add the first example in the doc
lrineau Jun 21, 2024
c35dd84
fix the compilation of the remeshing example
lrineau Jun 21, 2024
797d606
cleanup the ref manual
lrineau Jun 21, 2024
4a95f18
wip: expose the CDT_3 class template
lrineau Jun 21, 2024
e7a3bf5
new version, after review
lrineau Jun 28, 2024
6a45cc9
CSS adapted to dark mode
lrineau Jun 28, 2024
7f4928b
merge master (WIP: need #8273)
lrineau Jul 1, 2024
0cb50bc
Merge remote-tracking branch 'lrineau/CGAL-followup_PR_8170-lrineau' …
lrineau Jul 1, 2024
578f5bc
add the construction from polygon soups
lrineau Jul 2, 2024
4d0a89b
fix license headers
lrineau Jul 2, 2024
35b4f61
include license header
lrineau Jul 3, 2024
c99886d
a trailing space?!
lrineau Jul 3, 2024
58b930a
after pre-review
lrineau Jul 3, 2024
69b03d2
fix missing includes
lrineau Jul 3, 2024
564db69
a new example
lrineau Jul 3, 2024
8ad3541
remove Default_constrained_Delaunay_triangulation_3_type_generator fr…
lrineau Jul 4, 2024
b65c2ff
fix compilation with C++17
lrineau Jul 8, 2024
cefd1e1
update doc for Doxygen 1.9.6 as well
lrineau Jul 9, 2024
72200ca
add dependencies
lrineau Jul 9, 2024
8920af9
rename template parameters
lrineau Jul 25, 2024
caf7c3a
doc improvements after review
lrineau Jul 25, 2024
21e72b4
remove Default_constrained_Delaunay_triangulation_3
lrineau Jul 25, 2024
4e7ff3d
Merge remote-tracking branch 'cgal/master' into Triangulation_3-CDT_3…
lrineau Jul 26, 2024
8eaabab
cdt_3 plugin
lrineau Jul 27, 2024
8ba8d99
fix memory leaks
lrineau Jul 28, 2024
1d0604c
simplification
lrineau Jul 28, 2024
34792e4
new version of the cdt_3 plugin: can take a colorized surface_mesh as…
lrineau Jul 29, 2024
647686a
Merge remote-tracking branch 'cgal/master' into Triangulation_3-CDT_3…
lrineau Sep 9, 2024
093d400
the basic viewer bug is now fixed in `master`
lrineau Sep 9, 2024
7789bbe
rename to add "conforming"
lrineau Oct 10, 2024
029f1a5
ugly workaround to remove the `=default` from the documentation
lrineau Oct 10, 2024
a21a5eb
use lowercase
lrineau Oct 10, 2024
9a950d3
link to TDS_3::Facet
lrineau Oct 11, 2024
9764d6f
formatting of CSS file
lrineau Oct 11, 2024
c4389ad
fix for pictures, in dark mode
lrineau Oct 11, 2024
05f3c4e
fix css linter errors (empty rulesets)
lrineau Oct 11, 2024
e66153d
css: same for Doxygen 1.9.6
lrineau Oct 11, 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
19 changes: 19 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -1205,3 +1205,22 @@ Polygonal_surface_reconstruction/examples/build*
Polygonal_surface_reconstruction/test/build*
Solver_interface/examples/build*
/Mesh_3/examples/Mesh_3/indicator_0.inr.gz
dump-*.xyz
dump-*.binary.cgal
dump_*.txt
dump_*.off
dump-*.polylines.txt
all_segments.polylines.txt
Data/data/meshes/*.*.vtk
Data/data/meshes/*.*.ele
Data/data/meshes/*.*.face
Data/data/meshes/*.*.edge
Data/data/meshes/*.*.node
Data/data/meshes/*.*.mesh
Data/data/meshes/*.*.smesh
Data/data/meshes/*.off-cdt-output.off
Data/data/meshes/*.log
/*.off
/*.xyz
log.txt
/r0*
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*!
\ingroup PkgCT_3Concepts
\cgalConcept

The concept `ConformingConstrainedDelaunayTriangulationCellBase_3` refines the concept
`TriangulationCellBase_3` and is the base cell class for
the `CGAL::make_conforming_constrained_Delaunay_triangulation_3()` function template.

\cgalRefines{TriangulationCellBase_3, BaseWithTimeStamp}

\cgalHasModelsBegin
\cgalHasModels{CGAL::Conforming_constrained_Delaunay_triangulation_cell_base_3}
\cgalHasModelsEnd

\sa `ConformingConstrainedDelaunayTriangulationVertexBase_3`
*/
class ConformingConstrainedDelaunayTriangulationCellBase_3 {
public:

/// @name Access Functions
///
/// The following functions return a reference to an object of type
/// `CGAL::Conforming_constrained_Delaunay_triangulation_cell_data_3`, that contains
/// the per-cell data required by the implementation of the
/// `CGAL::make_conforming_constrained_Delaunay_triangulation_3()` function template.
/// @{
CGAL::Conforming_constrained_Delaunay_triangulation_cell_data_3& ccdt_3_data();
const CGAL::Conforming_constrained_Delaunay_triangulation_cell_data_3& ccdt_3_data() const;
/// @}
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
/*!
\ingroup PkgCT_3Concepts
\cgalConcept

The concept `ConformingConstrainedDelaunayTriangulationTraits_3` specifies the requirements
for the geometric traits class of the triangulation used as the first template
parameter `Triangulation_3` in the function template
`CGAL::make_conforming_constrained_Delaunay_triangulation_3()`.

\cgalRefines{DelaunayTriangulationTraits_3}

\cgalHasModelsBegin
\cgalHasModels{CGAL::Exact_predicates_inexact_constructions_kernel (recommended)}
\cgalHasModelsBare{all %CGAL kernels}
\cgalHasModelsEnd

\todo Add the requirements in the concept `ConformingConstrainedDelaunayTriangulationTraits_3`.

*/
class ConformingConstrainedDelaunayTriangulationTraits_3 {
public:
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*!
\ingroup PkgCT_3Concepts
\cgalConcept

The concept `ConformingConstrainedDelaunayTriangulationVertexBase_3` refines the concept
`TriangulationVertexBase_3` and is the base vertex class for
the `CGAL::make_conforming_constrained_Delaunay_triangulation_3()` function template.

\cgalRefines{TriangulationVertexBase_3, BaseWithTimeStamp}

\cgalHasModelsBegin
\cgalHasModels{CGAL::Conforming_constrained_Delaunay_triangulation_vertex_base_3}
\cgalHasModelsEnd

\sa `ConformingConstrainedDelaunayTriangulationCellBase_3`

*/
class ConformingConstrainedDelaunayTriangulationVertexBase_3 {
public:

/// @name Access Functions
///
/// The following functions return a reference to an object of type
/// `CGAL::Conforming_constrained_Delaunay_triangulation_vertex_data_3`, that contains
/// the per-vertex data required by the implementation of the
/// `CGAL::make_conforming_constrained_Delaunay_triangulation_3()` function template.
/// @{
CGAL::Conforming_constrained_Delaunay_triangulation_vertex_data_3& ccdt_3_data();
const CGAL::Conforming_constrained_Delaunay_triangulation_vertex_data_3& ccdt_3_data() const;
/// @}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
namespace CGAL {
/*!

\mainpage User Manual
\anchor Chapter_CT_3
\cgalAutoToc
\author Laurent Rineau

This chapter describes the ...

* \todo Explain what is a CDT. Why a given input, like a polyhedron, might not admit a constrained Delaunay triangulation.
* Explain "conforming to the faces of a polygon mesh".
*

\section CT_3_definitions Definitions

Section on definitions here ...

\section CT_3examples Examples

\subsection myFirstExample First Example

The following example shows ...

\cgalExample{Constrained_triangulation_3/conforming_constrained_Delaunay_triangulation_3.cpp }

or from a polygon soup ...

\cgalExample{Constrained_triangulation_3/conforming_constrained_Delaunay_triangulation_3_from_soup.cpp }

*/
} /* namespace CGAL */
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
@INCLUDE = ${CGAL_DOC_PACKAGE_DEFAULTS}
PROJECT_NAME = "CGAL ${CGAL_DOC_VERSION} - 3D Constrained Triangulations"

INPUT += \
${CGAL_PACKAGE_INCLUDE_DIR}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/*!
\defgroup PkgCT_3Ref 3D Constrained Triangulations Reference

\defgroup PkgCT_3Concepts Concepts
\ingroup PkgCT_3Ref

\defgroup PkgCT_3Functions Function Templates
\ingroup PkgCT_3Ref

\defgroup PkgCT_3Classes Class Templates
\ingroup PkgCT_3Ref

\addtogroup PkgCT_3Ref
\cgalPkgDescriptionBegin{3D Constrained Triangulations,PkgCT_3}
\cgalPkgPicture{cdt3-small.png}

\cgalPkgSummaryBegin
\cgalPkgAuthors{Laurent Rineau}
\cgalPkgDesc{This package allows to build and handle 3D constrained Delaunay triangulations.}
\todo Add more description.
\cgalPkgManuals{Chapter_CT_3,PkgCT_3Ref}
\cgalPkgSummaryEnd

\cgalPkgShortInfoBegin
\cgalPkgSince{6.1}
\cgalPkgDependsOn{\ref PkgTriangulation3 "3D Triangulations"}
\cgalPkgBib{cgal:x-x}
\cgalPkgLicense{\ref licensesGPL "GPL"}
\noop \cgalPkgDemo{DEMO 2,demo2.zip}
\todo Add a demo

\cgalPkgShortInfoEnd

\cgalPkgDescriptionEnd

\cgalClassifedRefPages
`CGAL::make_conforming_constrained_Delaunay_triangulation_3()` is the main function to create
a conforming constrained Delaunay triangulation in 3D, an instance of the class template
`CGAL::Conforming_constrained_Delaunay_triangulation_3`.

\cgalCRPSection{Functions Templates}

- `CGAL::make_conforming_constrained_Delaunay_triangulation_3()`

\cgalCRPSection{Concepts}

- `ConformingConstrainedDelaunayTriangulationTraits_3`
- `ConformingConstrainedDelaunayTriangulationVertexBase_3`
- `ConformingConstrainedDelaunayTriangulationCellBase_3`

\cgalCRPSubsection{Class Templates}

- `CGAL::Conforming_constrained_Delaunay_triangulation_3<Traits, Triangulation>`
- `CGAL::Conforming_constrained_Delaunay_triangulation_vertex_base_3<Traits, Vertex_base>`
- `CGAL::Conforming_constrained_Delaunay_triangulation_cell_base_3<Traits, Cell_base>`
*/
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
BGL
Kernel_23
Manual
SMDS_3
STL_Extension
TDS_3
Tetrahedral_remeshing
Triangulation_3
Polygon_mesh_processing
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/*!
\example Constrained_triangulation_3/conforming_constrained_Delaunay_triangulation_3.cpp
\brief A simple example of the use of the Constrained_triangulation_3 package.
\example Constrained_triangulation_3/conforming_constrained_Delaunay_triangulation_3_from_soup.cpp
\brief A simple example of the use of the Constrained_triangulation_3 package.
\example Constrained_triangulation_3/remesh_constrained_Delaunay_triangulation_3.cpp
\brief How to use `CGAL::tetrahedral_isotropic_remeshing` with a constrained Delaunay triangulation.
*/
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
cmake_minimum_required(VERSION 3.1...3.23)
project(Constrained_triangulation_3_Examples)

find_package(CGAL REQUIRED COMPONENTS Qt6)

create_single_source_cgal_program(conforming_constrained_Delaunay_triangulation_3.cpp)
create_single_source_cgal_program(conforming_constrained_Delaunay_triangulation_3_from_soup.cpp)
create_single_source_cgal_program(remesh_constrained_Delaunay_triangulation_3.cpp)

if(CGAL_Qt6_FOUND)
target_link_libraries(conforming_constrained_Delaunay_triangulation_3 PUBLIC CGAL::CGAL_Basic_viewer)
else()
message(STATUS "NOTICE: The example 'conforming_constrained_Delaunay_triangulation_3' requires Qt6, and will not be compiled.")
endif()
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#include <CGAL/make_conforming_constrained_Delaunay_triangulation_3.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Surface_mesh.h>
#include <CGAL/draw_triangulation_3.h>

#include <algorithm>

using K = CGAL::Exact_predicates_inexact_constructions_kernel;

int main(int argc, char* argv[])
{
CGAL::Surface_mesh<K::Point_3> mesh;

auto filename = (argc > 1) ? argv[1] : CGAL::data_file_path("meshes/mpi.off");
std::ifstream in(filename);
if(!in || !CGAL::IO::read_OFF(in, mesh)) {
std::cerr << "Error: cannot read file " << filename << std::endl;
return EXIT_FAILURE;
}

std::cout << "Read " << mesh.number_of_vertices() << " vertices and "
<< mesh.number_of_faces() << " faces" << std::endl;

auto ccdt = CGAL::make_conforming_constrained_Delaunay_triangulation_3(mesh);

std::cout << "Number of vertices in the CDT: "
<< ccdt.triangulation().number_of_vertices() << '\n'
<< "Number of constrained facets in the CDT: "
<< ccdt.number_of_constrained_facets() << '\n';

CGAL::draw(ccdt.triangulation());
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#include <CGAL/make_conforming_constrained_Delaunay_triangulation_3.h>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <vector>
#include <CGAL/draw_triangulation_3.h>

#include <algorithm>

using K = CGAL::Exact_predicates_inexact_constructions_kernel;

int main(int argc, char* argv[])
{
std::vector<K::Point_3> points;
std::vector<std::vector<std::size_t>> polygons;

auto filename = (argc > 1) ? argv[1] : CGAL::data_file_path("meshes/cubes.off");
std::ifstream in(filename);
if(!in || !CGAL::IO::read_OFF(in, points, polygons)) {
std::cerr << "Error: cannot read file " << filename << std::endl;
return EXIT_FAILURE;
}

std::cout << "Read " << points.size() << " vertices and "
<< polygons.size() << " polygons" << std::endl;

auto ccdt = CGAL::make_conforming_constrained_Delaunay_triangulation_3(points, polygons);

std::cout << "Number of vertices in the CDT: "
<< ccdt.triangulation().number_of_vertices() << '\n'
<< "Number of constrained facets in the CDT: "
<< ccdt.number_of_constrained_facets() << '\n';

CGAL::draw(ccdt.triangulation());
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#define CGAL_TETRAHEDRAL_REMESHING_VERBOSE 1
#define CGAL_TETRAHEDRAL_REMESHING_DEBUG 1

#include <CGAL/make_conforming_constrained_Delaunay_triangulation_3.h>

#include <CGAL/tetrahedral_remeshing.h>

#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/draw_triangulation_3.h>

#include <fstream>
#include <string>

using K = CGAL::Exact_predicates_inexact_constructions_kernel;
using Vb = CGAL::Conforming_constrained_Delaunay_triangulation_vertex_base_3<K>;
using Cb = CGAL::Conforming_constrained_Delaunay_triangulation_cell_base_3<K>;
using Tds = CGAL::Triangulation_data_structure_3<Vb, Cb>;
using Tr = CGAL::Triangulation_3<K, Tds>;
using CCDT = CGAL::Conforming_constrained_Delaunay_triangulation_3<K, Tr>;

int main(int argc, char* argv[])
{
std::string filename = (argc > 1) ? argv[1] : CGAL::data_file_path("meshes/mpi.off");
std::ifstream in(filename);

CGAL::Surface_mesh<K::Point_3> mesh;
if(!in || !CGAL::IO::read_OFF(in, mesh)) {
std::cerr << "Error: cannot read file " << filename << std::endl;
return EXIT_FAILURE;
}
CCDT ccdt = CGAL::make_conforming_constrained_Delaunay_triangulation_3<CCDT>(mesh);
//! [move ccdt to tr]
Tr tr = std::move(ccdt).triangulation();
//! [move ccdt to tr]
std::cout << "Number of vertices in tr: "
<< tr.number_of_vertices() << std::endl;
CGAL::tetrahedral_isotropic_remeshing(tr, 0.1,
CGAL::parameters::number_of_iterations(3));

std::cout << "Number of vertices in tr: "
<< tr.number_of_vertices() << std::endl;
CGAL::draw(ccdt.triangulation());
}
Loading