Merge remote-tracking branch 'cgal/master' into pr/janetournois/7754

# Conflicts:
#	Polyhedron/demo/Polyhedron/resources/shader_c3t3.frag
This commit is contained in:
Laurent Rineau 2023-11-01 22:59:58 +01:00
commit 5f27627e02
36 changed files with 108798 additions and 108824 deletions

View File

@ -1,6 +1,6 @@
/*!
\ingroup PkgAlgebraicFoundationsInteroperabilityConcepts
\ingroup PkgAlgebraicFoundationsAlgebraicStructuresConcepts
\cgalConcept
Two types `A` and `B` are a model of the `ExplicitInteroperable`
@ -27,4 +27,3 @@ class ExplicitInteroperable {
public:
}; /* end ExplicitInteroperable */

View File

@ -1,6 +1,6 @@
/*!
\ingroup PkgAlgebraicFoundationsFractionsConcepts
\ingroup PkgAlgebraicFoundationsAlgebraicStructuresConcepts
\cgalConcept
A type is considered as a `Fraction`, if there is a reasonable way to
@ -17,4 +17,3 @@ class Fraction {
public:
}; /* end Fraction */

View File

@ -1,6 +1,6 @@
/*!
\ingroup PkgAlgebraicFoundationsConcepts
\ingroup PkgAlgebraicFoundationsAlgebraicStructuresConcepts
\cgalConcept
A model of the concept `FromDoubleConstructible` is required
@ -27,4 +27,3 @@ FromDoubleConstructible(const double& d);
/// @}
}; /* end FromDoubleConstructible */

View File

@ -1,6 +1,6 @@
/*!
\ingroup PkgAlgebraicFoundationsConcepts
\ingroup PkgAlgebraicFoundationsAlgebraicStructuresConcepts
\cgalConcept
A model of the concept `FromIntConstructible` is required
@ -28,4 +28,3 @@ FromIntConstructible(int& i);
/// @}
}; /* end FromIntConstructible */

View File

@ -1,6 +1,6 @@
/*!
\ingroup PkgAlgebraicFoundationsInteroperabilityConcepts
\ingroup PkgAlgebraicFoundationsAlgebraicStructuresConcepts
\cgalConcept
Two types `A` and `B` are a model of the concept
@ -29,4 +29,3 @@ class ImplicitInteroperable {
public:
}; /* end ImplicitInteroperable */

View File

@ -1,19 +1,16 @@
#ifndef CGAL_APOLLONIUS_GRAPH_2_TEST_H
#define CGAL_APOLLONIUS_GRAPH_2_TEST_H
#include <cassert>
#include <CGAL/enum.h>
#include <CGAL/use.h>
#include <CGAL/Vector_2.h> // this is done in order to avoid error
// when the Segment_2_Segment_2_intersection.h file is included from
// the Triangulation_euclidean_traits_2.h file.
#include <CGAL/Apollonius_graph_2.h>
#include <CGAL/Apollonius_graph_hierarchy_2.h>
#include <CGAL/Apollonius_graph_traits_2.h>
#include <CGAL/Apollonius_graph_filtered_traits_2.h>
//#include <CGAL/new_traits/Apollonius_graph_new_filtered_traits_2.h>
#include <cassert>
#include <CGAL/enum.h>
#include <CGAL/use.h>
#include <CGAL/Random.h>
#include "IO/Null_output_stream.h"
@ -839,24 +836,29 @@ bool test_algo_generic(InputStream& is)
// file I/O methods
//--------------------------------------------------------------------
{
std::ofstream ofs("ag_testsuite.tmp");
std::string fname = "ag_testsuite_" + std::to_string(CGAL::Random().get_seed()) + ".tmp";
std::cout << "writing to " << fname << std::endl;
std::ofstream ofs(fname);
assert( ofs );
ag.file_output(ofs);
ofs.close();
std::ifstream ifs("ag_testsuite.tmp");
std::ifstream ifs(fname);
assert( ifs );
ag.file_input(ifs);
ifs.close();
assert( ag.is_valid() );
}
{
std::ofstream ofs("ag_testsuite.tmp");
std::string fname = "ag_testsuite_" + std::to_string(CGAL::Random().get_seed()) + ".tmp";
std::cout << "writing to " << fname << std::endl;
std::ofstream ofs(fname);
assert( ofs );
ofs << ag;
ofs.close();
std::ifstream ifs("ag_testsuite.tmp");
std::ifstream ifs(fname);
assert( ifs );
ifs >> ag;
ifs.close();

View File

@ -34,11 +34,7 @@
#include <boost/bind/bind.hpp>
#include <boost/ptr_container/ptr_vector.hpp>
#include <boost/random/mersenne_twister.hpp>
#if BOOST_VERSION >= 104700
# include <boost/random/uniform_int_distribution.hpp>
#else
# include <boost/random/uniform_int.hpp>
#endif
#include <boost/random/uniform_int_distribution.hpp>
#include <boost/random/uniform_01.hpp>
#include <boost/random/normal_distribution.hpp>
#if defined(CGAL_LINKED_WITH_BOOST_IOSTREAMS) && defined(CGAL_LINKED_WITH_BOOST_SERIALIZATION)
@ -65,17 +61,10 @@ inline void init_feature_class_data(FeatureClassDataFloat& /*data*/, int /*n_cla
}
typedef std::unordered_set<int> FeatureSet;
#if BOOST_VERSION >= 104700
typedef boost::random::uniform_int_distribution<> UniformIntDist;
typedef boost::random::normal_distribution<> NormalDist;
typedef boost::random::mt19937 RandomGen;
typedef boost::random::uniform_01<> UnitDist;
#else
typedef boost::uniform_int<> UniformIntDist;
typedef boost::normal_distribution<> NormalDist;
typedef boost::uniform_01<> UnitDist;
typedef boost::mt19937 RandomGen;
#endif
struct ForestParams {
size_t n_classes;

View File

@ -26,7 +26,7 @@ then the default traits class of `::convex_hull_3()` is `Convex_hull_traits_3<R>
\cgalHeading{Implementation}
The algorithm implemented by these functions is the quickhull algorithm of
Barnard <I>et al.</I> \cgalCite{bdh-qach-96}.
Barber <I>et al.</I> \cgalCite{bdh-qach-96}.
*/

View File

@ -100,7 +100,7 @@
, pages = "617--625"
, note = "SIGGRAPH '2005 Conference Proceedings"
, volume = 24
, url = "https://hal.inria.fr/inria-00226418"
, url = "https://inria.hal.science/inria-00226418"
, geombib = "not yet"
}
@ -157,7 +157,7 @@ Pion and Monique Teillaud and Mariette Yvinec"
@ARTICLE{cgal:bdt-hdcvd-14,
AUTHOR = {Mikhail Bogdanov and Olivier Devillers and Monique Teillaud},
JOURNAL = {Journal of Computational Geometry},
NOTE = {https://hal.inria.fr/hal-00961390},
NOTE = {https://inria.hal.science/hal-00961390},
PAGES = {56--85},
TITLE = {Hyperbolic {Delaunay} complexes and {Voronoi} diagrams made practical},
VOLUME = {5},
@ -243,7 +243,7 @@ Pion and Monique Teillaud and Mariette Yvinec"
Boissonnat}
, title = {Mesh Generation from 3D Multi-material Images}
, pages = {283--290}
, url = "https://hal.inria.fr/inria-00420228"
, url = "https://inria.hal.science/inria-00420228"
, x-international-audience = "yes"
, x-proceedings = "yes"
}
@ -257,7 +257,7 @@ Boissonnat}
, pages = "1455-14645"
, volume = 28
, year = 2009
, url = "https://hal.inria.fr/inria-00413248"
, url = "https://inria.hal.science/inria-00413248"
, x-international-audience = "yes"
, x-editorial-board = "yes"
}
@ -361,7 +361,7 @@ Boissonnat}
TITLE = {Delaunay triangulations on orientable surfaces of low genus},
YEAR = {2016},
DOI = {10.4230/LIPIcs.SoCG.2016.20},
URL = {https://hal.inria.fr/hal-01276386}
URL = {https://inria.hal.science/hal-01276386}
}
@ -402,7 +402,7 @@ Boissonnat}
,school = "Universit\'e de {Nice-Sophia Antipolis}"
,address = "France"
,year = 2010
,url = "https://tel.archives-ouvertes.fr/tel-00552215/"
,url = "https://theses.hal.science/tel-00552215/"
}
@inproceedings{cgal:ccplr-redtp-10,
@ -539,13 +539,13 @@ note="Conference version: Symp. on Geometry Processing 2003"
@inproceedings{ cgal:ct-c3pt-09
, title = "Computing {3D} Periodic Triangulations"
, author = "Manuel Caroli and Monique Teillaud"
, booktitle = "Proceedings 17th European Symposium on Algorithms"
, nickname = "ESA'09"
, booktitle = "Proceedings 17th European Symposium on Algorithms"
, nickname = "ESA'09"
, series = "Lecture Notes in Computer Science"
, year = 2009
, volume = 5757
, pages = "37--48"
, note = "Full version available as INRIA Research Report 6823 \url{https://hal.inria.fr/inria-00356871}"
, note = "Full version available as INRIA Research Report 6823 \url{https://inria.hal.science/inria-00356871}"
}
@inproceedings{cgal:pt-rs-14,
@ -729,7 +729,7 @@ Mourrain and Monique Teillaud"
@article{cgal:dmsl-ssmrp-11,
author = {Digne, Julie and Morel, Jean-Michel and Souzani, Charyar-Mehdi and
Lartigue, Claire},
Lartigue, Claire},
title = {Scale Space Meshing of Raw Data Point Sets},
journal = {Computer Graphics Forum},
year = {2011},
@ -741,13 +741,13 @@ Mourrain and Monique Teillaud"
}
@inproceedings{ cgal:dp-eegpd-03
, author = "Olivier Devillers and Sylvain Pion"
, title = "Efficient Exact Geometric Predicates for {Delaunay} Triangulations"
, booktitle = "Proc. 5th Workshop Algorithm Eng. Exper."
, nickname = "ALENEX '03"
, year = 2003
, pages = "37--44"
, url = "https://hal.inria.fr/inria-00344517/"
, author = "Olivier Devillers and Sylvain Pion"
, title = "Efficient Exact Geometric Predicates for {Delaunay} Triangulations"
, booktitle = "Proc. 5th Workshop Algorithm Eng. Exper."
, nickname = "ALENEX '03"
, year = 2003
, pages = "37--44"
, url = "https://inria.hal.science/inria-00344517/"
}
@article{ cgal:dpt-wt-02
@ -766,7 +766,7 @@ Teillaud"
, author = "Olivier Devillers and Monique Teillaud"
, title = "Perturbations and Vertex Removal in a {3D Delaunay} Triangulation"
, booktitle = "Proc. 14th ACM-SIAM Sympos. Discrete Algorithms (SODA)"
, url = "https://hal.inria.fr/inria-00166710/"
, url = "https://inria.hal.science/inria-00166710/"
, year = 2003
, pages = "313-319"
}
@ -778,7 +778,7 @@ Teillaud"
, volume = 44
, year = 2011
, pages = "160--168"
, url = "https://hal.archives-ouvertes.fr/inria-00560388/"
, url = "https://theses.hal.science/inria-00560388/"
, doi = "10.1016/j.comgeo.2010.09.010"
}
@ -845,7 +845,7 @@ Teillaud"
,school = "Universit\'e de {Nice-Sophia Antipolis}"
,address = "France"
,year = 2003
,url = "https://tel.archives-ouvertes.fr/tel-00832487/"
,url = "https://theses.hal.science/tel-00832487/"
}
@ -1230,7 +1230,7 @@ Teillaud"
TITLE = {{Implementing Delaunay triangulations of the Bolza surface}},
YEAR = {2017},
DOI = {10.4230/LIPIcs.SoCG.2017.44},
URL = {https://hal.inria.fr/hal-01568002},
URL = {https://inria.hal.science/hal-01568002},
}
@inproceedings{cgal:j-lrsspp-19,
@ -1261,13 +1261,13 @@ Teillaud"
@InProceedings{ cgal:k-reisv-04,
author = {Menelaos I. Karavelas},
title = {A robust and efficient implementation for the segment
author = {Menelaos I. Karavelas},
title = {A robust and efficient implementation for the segment
{V}oronoi diagram},
booktitle = {Proc. Internat. Symp. on Voronoi diagrams in Science
and Engineering (VD2004)},
pages = {51--62},
year = {2004}
pages = {51--62},
year = {2004}
}
@article{ cgal:k-rprnm-96
@ -1599,12 +1599,12 @@ ABSTRACT = {We present the first complete, exact and efficient C++ implementatio
}
@article{cgal:ml-cfsg-00
, author = "G. Medioni and M. Lee and C. Tang"
, title = "A Computational Framework for Segmentation and Grouping"
, journal = "Elsevier Science"
, year = 2000
, pages = ""
, update = "12.13 afabri"
, author = "G. Medioni and M. Lee and C. Tang"
, title = "A Computational Framework for Segmentation and Grouping"
, journal = "Elsevier Science"
, year = 2000
, pages = ""
, update = "12.13 afabri"
}
@book{ cgal:m-cst-93
@ -1887,28 +1887,28 @@ ABSTRACT = {We present the first complete, exact and efficient C++ implementatio
@article{cgal:btsag-asosr-16,
TITLE = {{A Survey of Surface Reconstruction from Point Clouds}},
AUTHOR = {Berger, Matthew and Tagliasacchi, Andrea and Seversky, Lee and Alliez, Pierre and Guennebaud, Gael and Levine, Joshua and Sharf, Andrei and Silva, Claudio},
URL = {https://hal.inria.fr/hal-01348404},
URL = {https://inria.hal.science/hal-01348404},
JOURNAL = {{Computer Graphics Forum}},
PUBLISHER = {{Wiley}},
PAGES = {27},
YEAR = {2016},
DOI = {10.1111/cgf.12802},
PDF = {https://hal.inria.fr/hal-01348404/file/survey-author.pdf},
PDF = {https://inria.hal.science/hal-01348404/file/survey-author.pdf},
HAL_ID = {hal-01348404},
HAL_VERSION = {v2}
}
@TechReport{ cgal:pabl-cco-07,
author = {Poudret, M. and Arnould, A. and Bertrand, Y. and Lienhardt, P.},
title = {Cartes Combinatoires Ouvertes.},
institution = {Laboratoire SIC E.A. 4103},
number = {2007-1},
month = {October},
year = {2007},
address = {F-86962 Futuroscope Cedex, France},
type = {Research Notes},
keywords = {cartes combinatoires, demi-ar{\^e}te, ar{\^e}te radiale},
author = {Poudret, M. and Arnould, A. and Bertrand, Y. and Lienhardt, P.},
title = {Cartes Combinatoires Ouvertes.},
institution = {Laboratoire SIC E.A. 4103},
number = {2007-1},
month = {October},
year = {2007},
address = {F-86962 Futuroscope Cedex, France},
type = {Research Notes},
keywords = {cartes combinatoires, demi-ar{\^e}te, ar{\^e}te radiale},
}
@article{ cgal:pc-rdp-86
@ -2293,7 +2293,7 @@ location = {Salt Lake City, Utah, USA}
, pages = "75:1-75:9"
, note = "SIGGRAPH '2009 Conference Proceedings"
, volume = "28(3)"
, url = "https://hal.inria.fr/inria-00359288"
, url = "https://inria.hal.science/inria-00359288"
, geombib = "not yet"
, x-editorial-board = {yes}
, x-proceedings = {yes}
@ -2332,7 +2332,7 @@ location = {Salt Lake City, Utah, USA}
,month = jun
,pages = {26--31}
,annote = {Inlining vector expressions and parameter passing
of expressions at compile time. Template Metaprograms.}
of expressions at compile time. Template Metaprograms.}
,update = "98.01 kettner"
}
@ -2354,7 +2354,7 @@ location = {Salt Lake City, Utah, USA}
,month = may
,pages = {36--43}
,annote = {Prime numbers at compiler time, C++ programs at
compile time, control structures, local variables.}
compile time, control structures, local variables.}
,update = "98.01 kettner"
}
@ -2422,7 +2422,7 @@ location = {Salt Lake City, Utah, USA}
@book{ cgal:w-impoo-94
,author = {Josie Wernicke}
,title = {The Inventor Mentor: Programming Object-Oriented
3D Graphics with Open Inventor, Release 2}
3D Graphics with Open Inventor, Release 2}
,publisher = {Addison-Wesley}
,year = 1994
,update = "97.04 kettner"
@ -2549,12 +2549,12 @@ url = "https://wscg.zcu.cz/wscg2003/Papers_2003/G67.pdf"
}
@InProceedings{cgal:k-vdc-06,
author = {Menelaos I. Karavelas},
title = {Voronoi diagrams in {\sc Cgal}},
author = {Menelaos I. Karavelas},
title = {Voronoi diagrams in {\sc Cgal}},
booktitle = {22nd European Symposium on Computational Geometry},
pages = {229--232},
year = {2006},
address = {Delphi, Greece},
pages = {229--232},
year = {2006},
address = {Delphi, Greece},
}
@incollection{cgal:fhktww-a-07,
@ -2607,27 +2607,27 @@ url = "https://www.boost.org/community/exception_safety.html"
}
@article{cgal:as-solri-92
, author = "F. Aurenhammer and O. Schwarzkopf"
, title = "A simple on-line randomized incremental algorithm for computing higher order {Voronoi} diagrams"
, journal = "Internat. J. Comput. Geom. Appl."
, volume = 2
, year = 1992
, pages = "363--381"
, keywords = "Voronoi diagrams, geometric transforms, dynamization"
, succeeds = "as-solri-91"
, update = "93.09 aurenhammer, 93.05 schwarzkopf"
, author = "F. Aurenhammer and O. Schwarzkopf"
, title = "A simple on-line randomized incremental algorithm for computing higher order {Voronoi} diagrams"
, journal = "Internat. J. Comput. Geom. Appl."
, volume = 2
, year = 1992
, pages = "363--381"
, keywords = "Voronoi diagrams, geometric transforms, dynamization"
, succeeds = "as-solri-91"
, update = "93.09 aurenhammer, 93.05 schwarzkopf"
}
@inproceedings{cgal:fy-okvd-01
, author = "Julia Fl{\"o}totto and Mariette Yvinec"
, title = "Order-$k$ {Voronoi} Diagrams"
, booktitle = "Abstracts 17th European Workshop Comput. Geom."
, nickname = "CG 2001"
, site = "Berlin"
, publisher = "Freie Universit{\"a}t Berlin"
, year = 2001
, pages = "109--112"
, update = "01.04 icking"
, author = "Julia Fl{\"o}totto and Mariette Yvinec"
, title = "Order-$k$ {Voronoi} Diagrams"
, booktitle = "Abstracts 17th European Workshop Comput. Geom."
, nickname = "CG 2001"
, site = "Berlin"
, publisher = "Freie Universit{\"a}t Berlin"
, year = 2001
, pages = "109--112"
, update = "01.04 icking"
}
@proceedings{cgal:jlm-isgp-98,
@ -2768,7 +2768,7 @@ author = "Pedro M.M. de Castro and Frederic Cazals and Sebastien Loriot and Moni
, volume = "40"
, number = "1"
, pages = "61-78"
, url = "https://hal.inria.fr/inria-00344310/"
, url = "https://inria.hal.science/inria-00344310/"
, doi = "10.1016/j.comgeo.2007.06.003"
, x-international-audience = "yes"
, x-editorial-board = "yes"
@ -2788,7 +2788,7 @@ author = "Pedro M.M. de Castro and Frederic Cazals and Sebastien Loriot and Moni
, title = "Complexity of {Delaunay} triangulation for points on lower-dimensional polyhedra"
, booktitle = "Proc. 18th ACM-SIAM Sympos. Discrete Algorithms"
, nickname = "SODA"
, url = "https://hal.inria.fr/inria-00182835/"
, url = "https://inria.hal.science/inria-00182835/"
, year = 2007
, pages = "1106--1113"
}
@ -2856,14 +2856,14 @@ ADDRESS = "Saarbr{\"u}cken, Germany"
}
@InCollection{grlr-sturm-habicht-98,
author = {L.~Gonzalez-Vega and T.~Recio and H.~Lombardi and M.-F.~Roy},
title = {Sturm-Habicht Sequences, Determinants and Real Roots of Univariate Polynomials},
booktitle = {Quantifier Elimination and Cylindrical Algebraic Decomposition},
pages = {300--316},
publisher = {Springer},
year = 1998,
editor = {B.F.~Caviness and J.R.~Johnson},
series = {Texts and Monographs in Symbolic Computation}
author = {L.~Gonzalez-Vega and T.~Recio and H.~Lombardi and M.-F.~Roy},
title = {Sturm-Habicht Sequences, Determinants and Real Roots of Univariate Polynomials},
booktitle = {Quantifier Elimination and Cylindrical Algebraic Decomposition},
pages = {300--316},
publisher = {Springer},
year = 1998,
editor = {B.F.~Caviness and J.R.~Johnson},
series = {Texts and Monographs in Symbolic Computation}
}
@inproceedings{Sorkine2007AsRigidAs,
@ -3213,14 +3213,14 @@ pages = "207--221"
@techreport{frey:inria-00069921,
TITLE = {{MEDIT : An interactive Mesh visualization Software}},
AUTHOR = {Frey, Pascal},
URL = {https://hal.inria.fr/inria-00069921},
URL = {https://inria.hal.science/inria-00069921},
NUMBER = {RT-0253},
PAGES = {41},
INSTITUTION = {{INRIA}},
YEAR = {2001},
MONTH = Dec,
KEYWORDS = {MESH ; VISUALIZATION ; POST-PROCESSING},
PDF = {https://hal.inria.fr/inria-00069921/file/RT-0253.pdf},
PDF = {https://inria.hal.science/inria-00069921/file/RT-0253.pdf},
HAL_ID = {inria-00069921},
HAL_VERSION = {v1}
}

File diff suppressed because it is too large Load Diff

View File

@ -8,5 +8,5 @@ is available in:
Mikhail Bogdanov, Olivier Devillers, and Monique Teillaud. Hyperbolic
Delaunay complexes and Voronoi diagrams made practical. Journal of
Computational Geometry, 5(1):5685, 2014.
URL: https://hal.inria.fr/hal-00961390,
URL: https://inria.hal.science/hal-00961390,
doi:10.20382/jocg.v5i1a4.

View File

@ -1,7 +1,6 @@
namespace CGAL {
/*!
\ingroup kernel_affine
\ingroup kernel_classes2
The class `Aff_transformation_2` represents two-dimensional affine transformations.

View File

@ -2,7 +2,6 @@ namespace CGAL {
/*!
\ingroup kernel_classes3
\ingroup kernel_affine
The class `Aff_transformation_3` represents three-dimensional affine transformations.
The general form of an affine transformation is based on a homogeneous

View File

@ -2,7 +2,7 @@
namespace CGAL {
/*!
\ingroup kernel_affine
\ingroup PkgKernel23Ref
Tag class for affine transformations.
@ -24,7 +24,7 @@ public:
namespace CGAL {
/*!
\ingroup kernel_affine
\ingroup PkgKernel23Ref
Tag class for affine transformations.
@ -46,7 +46,7 @@ public:
namespace CGAL {
/*!
\ingroup kernel_affine
\ingroup PkgKernel23Ref
Tag class for affine transformations.
@ -68,7 +68,7 @@ public:
namespace CGAL {
/*!
\ingroup kernel_affine
\ingroup PkgKernel23Ref
Tag class for affine transformations.
@ -90,7 +90,7 @@ public:
namespace CGAL {
/*!
\ingroup kernel_affine
\ingroup PkgKernel23Ref
Tag class for affine transformations.

View File

@ -12,7 +12,7 @@ function are available.
/*!
\addtogroup do_intersect_linear_grp
\ingroup do_intersect
\ingroup do_intersect_grp
\sa `do_intersect_circular_grp`
\sa `do_intersect_spherical_grp`
@ -79,7 +79,7 @@ function are available.
/*!
\addtogroup intersection_linear_grp
\ingroup intersection
\ingroup intersection_grp
*/
/// @{

View File

@ -31,7 +31,7 @@ public:
namespace CGAL {
/*!
\ingroup PkgMinkowskiSum2Classes
\ingroup PkgMinkowskiSum2Ref
The `Hertel_Mehlhorn_convex_decomposition_2` class implements the approximation algorithm of Hertel
and Mehlhorn for decomposing a polygon into convex

View File

@ -8,15 +8,4 @@
<enableAddressBar>false</enableAddressBar>
<enableFilterFunctionality>false</enableFilterFunctionality>
</assistant>
<docFiles>
<generate>
<file>
<input>Periodic_3_triangulation_3.qhp</input>
<output>Periodic_3_triangulation_3.qch</output>
</file>
</generate>
<register>
<file>Periodic_3_triangulation_3.qch</file>
</register>
</docFiles>
</QHelpCollectionProject>

View File

@ -8,15 +8,4 @@
<enableAddressBar>false</enableAddressBar>
<enableFilterFunctionality>false</enableFilterFunctionality>
</assistant>
<docFiles>
<generate>
<file>
<input>Periodic_Lloyd_3.qhp</input>
<output>Periodic_Lloyd_3.qch</output>
</file>
</generate>
<register>
<file>Periodic_Lloyd_3.qch</file>
</register>
</docFiles>
</QHelpCollectionProject>

View File

@ -553,9 +553,6 @@ create_mst_graph(
For this reason it should not be called on sorted containers.
It is based on \cgalCite{cgal:hddms-srup-92}.
\warning This function may fail when Boost version 1.54 is used,
because of the following bug: https://svn.boost.org/trac/boost/ticket/9012
\pre Normals must be unit vectors
\pre `k >= 2`

View File

@ -1150,6 +1150,9 @@ bool adapt_patch(std::vector<std::vector<Point> >& point_patch,
put(local_vpm, v, projector(get(local_vpm, v)));
// The projector can create degenerate faces
for (halfedge_descriptor h : border_hedges)
if (is_degenerate_triangle_face(face(opposite(h, local_mesh), local_mesh), local_mesh))
return !has_SI;
if(!remove_degenerate_faces(local_mesh))
return !has_SI;
@ -2031,7 +2034,7 @@ remove_self_intersections_one_step(std::set<typename boost::graph_traits<Triangl
#ifdef CGAL_PMP_REMOVE_SELF_INTERSECTION_OUTPUT_INTERMEDIATE_FULL_MESH
fname = "results/mesh_at_step_"+std::to_string(step)+"_CC_"+std::to_string(cc_id)+".off";
CGAL::IO::write_polygon_mesh(fname, tmesh, CGAL::parameters::stream_precision);
CGAL::IO::write_polygon_mesh(fname, tmesh, CGAL::parameters::stream_precision(17));
#endif
// expand the region to be filled

View File

@ -49,21 +49,3 @@
#include <CGAL/Polygon_mesh_processing/smooth_mesh.h>
#include <CGAL/Polygon_mesh_processing/smooth_shape.h>
#include <CGAL/Polygon_mesh_processing/manifoldness.h>
// the named parameter header being not documented the doc is put here for now
#ifdef DOXYGEN_RUNNING
namespace CGAL {
namespace Polygon_mesh_processing {
namespace parameters {
/*! \ingroup namedparameters
\deprecated This function is deprecated and `default_values()` should be used instead.
This function can be used to indicate that all optional named parameters
to be used are the default ones. This is particularly useful when a function
requires more than one sequence of named parameters and default values is
fine only for some of them.
*/
unspecified_type all_default();
} } } // end of namespace CGAL::Polygon_mesh_processing::parameters
#endif

View File

@ -32,7 +32,7 @@
namespace CGAL {
/*!
\ingroup PkgPolygonalSurfaceReconstruction
\ingroup PkgPolygonalSurfaceReconstructionRef
\brief

View File

@ -270,7 +270,9 @@ private:
Word_type image_data(int i, int j, int k)
{
if ( i>=0 && i<image_->xdim() && j>=0 && j<image_->ydim() && k>=0 && k<image_->zdim() )
if ( i>=0 && static_cast<std::size_t>(i)<image_->xdim() &&
j>=0 && static_cast<std::size_t>(j)<image_->ydim() &&
k>=0 && static_cast<std::size_t>(k)<image_->zdim() )
return image_->value(i, j, k);
else
return 0;

View File

@ -34,14 +34,14 @@ if(ITK_FOUND)
target_link_libraries(mesh_3_plugin PUBLIC CGAL::ITK_support)
endif(ITK_FOUND)
find_package(VTK QUIET COMPONENTS vtkImagingGeneral vtkIOImage NO_MODULE)
find_package(VTK QUIET COMPONENTS vtkImagingGeneral vtkIOImage vtkIOXML NO_MODULE)
if(VTK_FOUND)
if(VTK_USE_FILE)
include(${VTK_USE_FILE})
endif()
if("${VTK_VERSION_MAJOR}" GREATER "5" OR VTK_VERSION VERSION_GREATER 5)
if(TARGET VTK::IOImage)
set(VTK_LIBRARIES VTK::IOImage VTK::ImagingGeneral)
set(VTK_LIBRARIES VTK::IOImage VTK::ImagingGeneral VTK::IOXML)
endif()
if(NOT VTK_LIBRARIES)
message(STATUS "NOTICE: DICOM files (.dcm) require the VTK libraries, and will not be readable.")

View File

@ -54,8 +54,10 @@
#include <CGAL/IO/read_vtk_image_data.h>
#include <vtkNew.h>
#include <vtkSmartPointer.h>
#include <vtkStringArray.h>
#include <vtkImageData.h>
#include <vtkXMLImageDataReader.h>
#include <vtkDICOMImageReader.h>
#include <vtkBMPReader.h>
#include <vtkNIFTIImageReader.h>
@ -77,6 +79,23 @@
#include <iostream>
#include <locale>
template <class vtkReader>
bool
load_vtk_file(QFileInfo fileinfo, Image* image)
{
#ifdef CGAL_USE_VTK
vtkNew<vtkReader> reader;
reader->SetFileName(fileinfo.filePath().toUtf8());
reader->Update();
auto vtk_image = reader->GetOutput();
vtk_image->Print(std::cerr);
*image = CGAL::IO::read_vtk_image_data(vtk_image); // copy the image data
return true;
#else
return false;
#endif
}
// Covariant return types don't work for scalar types and we cannot
// have templates here, hence this unfortunate hack.
@ -1089,6 +1108,7 @@ QString Io_image_plugin::nameFilters() const
return QString("Inrimage files (*.inr *.inr.gz) ;; "
"Analyze files (*.hdr *.img *.img.gz) ;; "
"Stanford Exploration Project files (*.H *.HH) ;; "
"VTK image files (*.vti) ;; "
"NRRD image files (*.nrrd) ;; "
"NIFTI image files (*.nii *.nii.gz)");
}
@ -1121,6 +1141,7 @@ void convert(Image* image)
image->image()->wordKind = WK_FLOAT;
}
QList<Scene_item*>
Io_image_plugin::load(QFileInfo fileinfo, bool& ok, bool add_to_scene)
{
@ -1128,39 +1149,39 @@ Io_image_plugin::load(QFileInfo fileinfo, bool& ok, bool add_to_scene)
QApplication::restoreOverrideCursor();
Image* image = new Image;
// read a nrrd file
if(fileinfo.suffix() == "nrrd")
QString warningMessage;
// read a vti file
if(fileinfo.suffix() == "vti")
{
#ifdef CGAL_USE_VTK
vtkNew<vtkNrrdReader> reader;
reader->SetFileName(fileinfo.filePath().toUtf8());
reader->Update();
auto vtk_image = reader->GetOutput();
vtk_image->Print(std::cerr);
*image = CGAL::IO::read_vtk_image_data(vtk_image); // copy the image data
ok = load_vtk_file<vtkXMLImageDataReader>(fileinfo, image);
#else
CGAL::Three::Three::warning("VTK is required to read NRRD files");
delete image;
return QList<Scene_item*>();
ok = false;
warningMessage = "VTK is required to read VTI files";
#endif
}
// read a nrrd file
else if(fileinfo.suffix() == "nrrd")
{
#ifdef CGAL_USE_VTK
ok = load_vtk_file<vtkNrrdReader>(fileinfo, image);
#else
ok = false;
warningMessage = "VTK is required to read NRRD files";
#endif
}
// read a NIFTI file
if(fileinfo.suffix() == "nii"
else if(fileinfo.suffix() == "nii"
|| ( fileinfo.suffix() == "gz"
&& fileinfo.fileName().endsWith(QString(".nii.gz"), Qt::CaseInsensitive)))
{
#ifdef CGAL_USE_VTK
vtkNew<vtkNIFTIImageReader> reader;
reader->SetFileName(fileinfo.filePath().toUtf8());
reader->Update();
auto vtk_image = reader->GetOutput();
vtk_image->Print(std::cerr);
*image = CGAL::IO::read_vtk_image_data(vtk_image); // copy the image data
ok = load_vtk_file<vtkNIFTIImageReader>(fileinfo, image);
#else
CGAL::Three::Three::warning("VTK is required to read NIfTI files");
delete image;
return QList<Scene_item*>();
ok = false;
warningMessage = "VTK is required to read NifTI files";
#endif
}
@ -1267,11 +1288,16 @@ Io_image_plugin::load(QFileInfo fileinfo, bool& ok, bool add_to_scene)
if(!success)
{
ok = false;
delete image;
return QList<Scene_item*>();
}
}
if (!ok) {
if (warningMessage.length() > 0)
CGAL::Three::Three::warning(warningMessage);
delete image;
return QList<Scene_item*>();
}
// Get display precision
QDialog dialog;
ui.setupUi(&dialog);

View File

@ -368,9 +368,9 @@ std::optional<QString> Mesh_3_plugin::get_items_or_return_error_string() const
{
auto poly_items_ptr = std::get_if<Polyhedral_mesh_items>(&items.value());
auto image_items_ptr = std::get_if<Image_mesh_items>(&items.value());
if(poly_items_ptr && poly_items_ptr == nullptr)
if(poly_items_ptr != nullptr)
poly_items_ptr->polylines_item = polylines_item;
else if(image_items_ptr && image_items_ptr == nullptr)
else if(image_items_ptr != nullptr )
image_items_ptr->polylines_item = polylines_item;
}
@ -677,6 +677,8 @@ void Mesh_3_plugin::mesh_3(const Mesh_type mesh_type,
ui.protectEdges->addItem(boundary_only.first, v(boundary_only.second));
} else
ui.protectEdges->addItem(sharp_edges.first, v(sharp_edges.second));
if (polylines_item != nullptr)
ui.protectEdges->addItem(input_polylines.first, v(input_polylines.second));
} else if (items->index() == IMAGE_MESH_ITEMS) {
if (polylines_item != nullptr) {
ui.protectEdges->addItem(input_polylines.first, QVariant::fromValue(input_polylines.second));
@ -743,6 +745,7 @@ void Mesh_3_plugin::mesh_3(const Mesh_type mesh_type,
const auto pe_flags = ui.protectEdges->currentData().value<Protection_flags>();
protect_borders = ui.protect->isChecked() && pe_flags.testFlag(BORDERS);
protect_features = ui.protect->isChecked() && pe_flags.testFlag(FEATURES);
const bool protect_polylines = ui.protect->isChecked() && polylines_item != nullptr;
const bool detect_connected_components = ui.detectComponents->isChecked();
const int manifold = (ui.manifoldCheckBox->isChecked() ? 1 : 0) +
@ -789,7 +792,7 @@ void Mesh_3_plugin::mesh_3(const Mesh_type mesh_type,
sm_items.removeAll(make_not_null(bounding_sm_item));
}
Scene_polylines_item::Polylines_container plc;
Scene_polylines_item::Polylines_container polylines_empty_container;
SMesh* bounding_polyhedron = (bounding_sm_item == nullptr)
? nullptr
: bounding_sm_item->polyhedron();
@ -825,7 +828,7 @@ void Mesh_3_plugin::mesh_3(const Mesh_type mesh_type,
{
thread = cgal_code_mesh_3(
polyhedrons,
(polylines_item == nullptr) ? plc : polylines_item->polylines,
protect_polylines ? polylines_item->polylines : polylines_empty_container,
bounding_polyhedron,
item_name,
angle,
@ -892,11 +895,11 @@ void Mesh_3_plugin::mesh_3(const Mesh_type mesh_type,
? image_item->image_weights()
: nullptr;
Scene_polylines_item::Polylines_container plc;
Scene_polylines_item::Polylines_container polylines_empty_container;
thread = cgal_code_mesh_3(
pImage,
(img_polylines_item == nullptr) ? plc : img_polylines_item->polylines,
(img_polylines_item == nullptr) ? polylines_empty_container : img_polylines_item->polylines,
angle,
facets_sizing,
facets_min_sizing,

View File

@ -973,7 +973,7 @@ void Scene_edit_box_item_priv::remodel_box(const QVector3D &dir)
Q_FOREACH(Scene_edit_box_item::vertex* selected_vertex, selected_vertices )
{
int id = selected_vertex->id;
CGAL_assume(id<8);
CGAL_assume(id<8 && id >=0);
*selected_vertex->x = applyX(id, last_pool[id][0], dir.x());
*selected_vertex->y = applyY(id, last_pool[id][1], dir.y());
*selected_vertex->z = applyZ(id, last_pool[id][2], dir.z());

View File

@ -370,7 +370,7 @@ struct Scene_triangulation_3_item_priv {
is_aabb_tree_built = false;
alphaSlider = NULL;
is_filterable = true;
memset(visible_biteset, 0xFFFF, Scene_triangulation_3_item::number_of_bitset * sizeof(uint)); // all bits set to 1
visible_bitset.fill(0xFFFFFFFF);
}
void computeIntersection(const Primitive& facet);
void fill_aabb_tree() {
@ -528,7 +528,7 @@ struct Scene_triangulation_3_item_priv {
QVector<QColor> colors;
QVector<QColor> colors_subdomains;
boost::dynamic_bitset<> visible_subdomain;
std::bitset<32> visible_biteset[Scene_triangulation_3_item::number_of_bitset];
std::array<std::bitset<32>, Scene_triangulation_3_item::number_of_bitset> visible_bitset;
bool show_tetrahedra;
bool cut_plane_enabled;
bool is_aabb_tree_built;
@ -1054,9 +1054,11 @@ void Scene_triangulation_3_item::draw(CGAL::Three::Viewer_interface* viewer) con
program->bind();
if(d->is_filterable)
{
GLuint visible_bitset_ulong[number_of_bitset];
memcpy(visible_bitset_ulong, d->visible_biteset, number_of_bitset * sizeof(uint));
program->setUniformValueArray("is_visible_bitset", visible_bitset_ulong, number_of_bitset);
std::array<GLuint, number_of_bitset> visible_bitset_ulong;
std::transform(d->visible_bitset.cbegin(), d->visible_bitset.cend(), visible_bitset_ulong.begin(),
[](const std::bitset<32>& bitset) { return bitset.to_ulong(); }
);
program->setUniformValueArray("is_visible_bitset", visible_bitset_ulong.data(), number_of_bitset);
}
program->setUniformValue("is_filterable", d->is_filterable);
program->release();
@ -1142,9 +1144,11 @@ void Scene_triangulation_3_item::drawEdges(CGAL::Three::Viewer_interface* viewer
program->bind();
if(d->is_filterable)
{
GLuint visible_bitset_ulong[number_of_bitset];
memcpy(visible_bitset_ulong, d->visible_biteset, number_of_bitset * sizeof(uint));
program->setUniformValueArray("is_visible_bitset", visible_bitset_ulong, number_of_bitset);
std::array<GLuint, number_of_bitset> visible_bitset_ulong;
std::transform(d->visible_bitset.cbegin(), d->visible_bitset.cend(), visible_bitset_ulong.begin(),
[](const std::bitset<32>& bitset) { return bitset.to_ulong(); }
);
program->setUniformValueArray("is_visible_bitset", visible_bitset_ulong.data(), number_of_bitset);
}
program->setUniformValue("is_filterable", d->is_filterable);
program->release();
@ -2154,7 +2158,7 @@ QColor Scene_triangulation_3_item::getSubdomainIndexColor(int i) const
void Scene_triangulation_3_item::resetVisibleSubdomain()
{
d->visible_subdomain.set();
memset(d->visible_biteset, 0xFFFF, number_of_bitset * sizeof(uint));
d->visible_bitset.fill(0xFFFFFFFF);
}
void Scene_triangulation_3_item::switchVisibleSubdomain(int id)
@ -2164,7 +2168,7 @@ void Scene_triangulation_3_item::switchVisibleSubdomain(int id)
int i = compact_id/32;
int j = compact_id%32;
d->visible_biteset[i][j] = d->visible_subdomain[id];
d->visible_bitset[i][j] = d->visible_subdomain[id];
}
bool Scene_triangulation_3_item::isVisibleSubdomain(int id) const

View File

@ -56,10 +56,7 @@ bool compute_filtering_visibility() {
uint j2 = domain2%32u;
uint visible1 = uint(is_visible_bitset[i1]);
uint visible2 = uint(is_visible_bitset[i2]);
if(((visible1>>j1)&1u) == 0u && ((visible2>>j2)&1u) == 0u)
{
discard;
}
return ((visible1>>j1)&1u) == 0u && ((visible2>>j2)&1u) == 0u;
}
else
return false;

View File

@ -298,7 +298,7 @@ private:
/*!
\ingroup PkgSolverInterfaceRefLS
\ingroup PkgSolverInterfaceLS
The class `Eigen_sparse_symmetric_matrix` is a wrapper around `Eigen` matrix type
<a href="https://eigen.tuxfamily.org/dox/classEigen_1_1SparseMatrix.html">`Eigen::SparseMatrix` </a>

View File

@ -495,7 +495,7 @@ A precise specification of the format is available
The Medit format, using file extension `.mesh`, is a format used by the Medit software.
In \cgal, it is used to represent 3D meshes.
A precise specification of the format is available <a href="https://hal.inria.fr/inria-00069921/document">in this report</a>,
A precise specification of the format is available <a href="https://inria.hal.science/inria-00069921/document">in this report</a>,
in the appendices (section 7.2.1, page 36).
Only the `CGAL::Mesh_complex_3_in_triangulation_3` \cgal data structure can be exported into `.mesh`

View File

@ -11,7 +11,7 @@
// Author(s) : Mael Rouxel-Labbé
/**
* \ingroup PkgSurfaceMeshParameterization
* \ingroup PkgSurfaceMeshParameterizationRef
* \file CGAL/surface_mesh_parameterization.h
* Convenience header file including the headers for all
* the free functions of this package.
@ -34,4 +34,3 @@
#include <CGAL/Surface_mesh_parameterization/Circular_border_parameterizer_3.h>
#include <CGAL/Surface_mesh_parameterization/Square_border_parameterizer_3.h>
#include <CGAL/Surface_mesh_parameterization/Two_vertices_parameterizer_3.h>

View File

@ -530,7 +530,7 @@ private:
std::cout << "\t vertices = " << nbv << std::endl;
CGAL::Tetrahedral_remeshing::debug::dump_vertices_by_dimension(
m_c3t3.triangulation(), "c3t3_vertices_");
m_c3t3.triangulation(), "0-c3t3_vertices_after_init_");
CGAL::Tetrahedral_remeshing::debug::check_surface_patch_indices(m_c3t3);
#endif
}

View File

@ -392,15 +392,14 @@ void tetrahedral_isotropic_remeshing(
= choose_parameter(get_parameter(np, internal_np::smooth_constrained_edges),
false);
typedef typename Tr::Cell_handle Cell_handle;
typedef typename internal_np::Lookup_named_param_def <
internal_np::cell_selector_t,
internal_np::cell_selector_t,
NamedParameters,
Constant_property_map<Cell_handle, bool>//default
Tetrahedral_remeshing::internal::All_cells_selected<Tr>//default
> ::type SelectionFunctor;
SelectionFunctor cell_select
= choose_parameter(get_parameter(np, internal_np::cell_selector),
Constant_property_map<Cell_handle, bool>(true));
Tetrahedral_remeshing::internal::All_cells_selected<Tr>());
typedef std::pair<typename Tr::Vertex_handle, typename Tr::Vertex_handle> Edge_vv;
typedef typename internal_np::Lookup_named_param_def <

View File

@ -742,8 +742,8 @@ The class `Regular_triangulation_2<Traits, Tds>`
is designed to maintain the
regular triangulation of a set of \f$ 2d\f$ weighted points.
It derives from the class `Triangulation_2<Traits, Tds>`.
The functions `insert` and
`remove` are overwritten to handle weighted points
The functions `insert()` and
`remove()` are overwritten to handle weighted points
and maintain the regular
property.
The function `move()` is not
@ -1184,7 +1184,7 @@ classes.
The class `Triangulation_hierarchy_2<Tr>` inherits from the
triangulation type passed as template parameter `Tr`.
The `insert`, `move`, and `remove` member functions
The `insert()`, `move()`, and `remove()` member functions
are overwritten to update the data structure at each operation.
The locate queries are also overwritten to take advantage of the data
structure for a fast processing.
@ -1327,7 +1327,7 @@ data structure.
The most efficient method to insert (weighted) points in a
Delaunay (or regular) triangulation is to provide an iterator
range over (weighted) points to the insert function. However, an iterator range of
range over (weighted) points to the `insert()` function. However, an iterator range of
(weighted) points does not allow the user to set different information to each vertex.
To solve this problem, in the case the vertex type of the triangulation
is a model of the concept `TriangulationVertexBaseWithInfo_2`
@ -1339,7 +1339,7 @@ of the corresponding point given in the range.
\subsection Triangulation_2UsinganIteratorOverPairs Using an Iterator Over Pairs
Each point and its information are gathered into a pair. We provide
the `insert` function of the triangulation with a range of such pairs.
the `insert()` function of the triangulation with a range of such pairs.
\cgalExample{Triangulation_2/info_insert_with_pair_iterator_2.cpp}
\subsection Triangulation_2UsingtheBoostZipIterator Using the Boost Zip Iterator

View File

@ -2066,7 +2066,7 @@ Regular_triangulation_3<Gt,Tds,Lds>::
side_of_power_sphere(Cell_handle c, const Weighted_point& p, bool perturb) const
{
CGAL_precondition(dimension() == 3);
int i3;
int i3=3;
if(! c->has_vertex(infinite_vertex(), i3))
{
return Bounded_side(side_of_oriented_power_sphere(c->vertex(0)->point(),
@ -2175,7 +2175,7 @@ side_of_power_circle(Cell_handle c, int i, const Weighted_point& p,
bool perturb) const
{
CGAL_precondition(dimension() >= 2);
int i3 = 5;
int i3 = 3;
if(dimension() == 2)
{
CGAL_precondition(i == 3);