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 \cgalConcept
Two types `A` and `B` are a model of the `ExplicitInteroperable` Two types `A` and `B` are a model of the `ExplicitInteroperable`
@ -27,4 +27,3 @@ class ExplicitInteroperable {
public: public:
}; /* end ExplicitInteroperable */ }; /* end ExplicitInteroperable */

View File

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

View File

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

View File

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

View File

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

View File

@ -1,19 +1,16 @@
#ifndef CGAL_APOLLONIUS_GRAPH_2_TEST_H #ifndef CGAL_APOLLONIUS_GRAPH_2_TEST_H
#define 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_2.h>
#include <CGAL/Apollonius_graph_hierarchy_2.h> #include <CGAL/Apollonius_graph_hierarchy_2.h>
#include <CGAL/Apollonius_graph_traits_2.h> #include <CGAL/Apollonius_graph_traits_2.h>
#include <CGAL/Apollonius_graph_filtered_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" #include "IO/Null_output_stream.h"
@ -839,24 +836,29 @@ bool test_algo_generic(InputStream& is)
// file I/O methods // 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 ); assert( ofs );
ag.file_output(ofs); ag.file_output(ofs);
ofs.close(); ofs.close();
std::ifstream ifs("ag_testsuite.tmp"); std::ifstream ifs(fname);
assert( ifs ); assert( ifs );
ag.file_input(ifs); ag.file_input(ifs);
ifs.close(); ifs.close();
assert( ag.is_valid() ); 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 ); assert( ofs );
ofs << ag; ofs << ag;
ofs.close(); ofs.close();
std::ifstream ifs("ag_testsuite.tmp"); std::ifstream ifs(fname);
assert( ifs ); assert( ifs );
ifs >> ag; ifs >> ag;
ifs.close(); ifs.close();

View File

@ -34,11 +34,7 @@
#include <boost/bind/bind.hpp> #include <boost/bind/bind.hpp>
#include <boost/ptr_container/ptr_vector.hpp> #include <boost/ptr_container/ptr_vector.hpp>
#include <boost/random/mersenne_twister.hpp> #include <boost/random/mersenne_twister.hpp>
#if BOOST_VERSION >= 104700 #include <boost/random/uniform_int_distribution.hpp>
# include <boost/random/uniform_int_distribution.hpp>
#else
# include <boost/random/uniform_int.hpp>
#endif
#include <boost/random/uniform_01.hpp> #include <boost/random/uniform_01.hpp>
#include <boost/random/normal_distribution.hpp> #include <boost/random/normal_distribution.hpp>
#if defined(CGAL_LINKED_WITH_BOOST_IOSTREAMS) && defined(CGAL_LINKED_WITH_BOOST_SERIALIZATION) #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; typedef std::unordered_set<int> FeatureSet;
#if BOOST_VERSION >= 104700
typedef boost::random::uniform_int_distribution<> UniformIntDist; typedef boost::random::uniform_int_distribution<> UniformIntDist;
typedef boost::random::normal_distribution<> NormalDist; typedef boost::random::normal_distribution<> NormalDist;
typedef boost::random::mt19937 RandomGen; typedef boost::random::mt19937 RandomGen;
typedef boost::random::uniform_01<> UnitDist; 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 { struct ForestParams {
size_t n_classes; 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} \cgalHeading{Implementation}
The algorithm implemented by these functions is the quickhull algorithm of 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" , pages = "617--625"
, note = "SIGGRAPH '2005 Conference Proceedings" , note = "SIGGRAPH '2005 Conference Proceedings"
, volume = 24 , volume = 24
, url = "https://hal.inria.fr/inria-00226418" , url = "https://inria.hal.science/inria-00226418"
, geombib = "not yet" , geombib = "not yet"
} }
@ -157,7 +157,7 @@ Pion and Monique Teillaud and Mariette Yvinec"
@ARTICLE{cgal:bdt-hdcvd-14, @ARTICLE{cgal:bdt-hdcvd-14,
AUTHOR = {Mikhail Bogdanov and Olivier Devillers and Monique Teillaud}, AUTHOR = {Mikhail Bogdanov and Olivier Devillers and Monique Teillaud},
JOURNAL = {Journal of Computational Geometry}, JOURNAL = {Journal of Computational Geometry},
NOTE = {https://hal.inria.fr/hal-00961390}, NOTE = {https://inria.hal.science/hal-00961390},
PAGES = {56--85}, PAGES = {56--85},
TITLE = {Hyperbolic {Delaunay} complexes and {Voronoi} diagrams made practical}, TITLE = {Hyperbolic {Delaunay} complexes and {Voronoi} diagrams made practical},
VOLUME = {5}, VOLUME = {5},
@ -243,7 +243,7 @@ Pion and Monique Teillaud and Mariette Yvinec"
Boissonnat} Boissonnat}
, title = {Mesh Generation from 3D Multi-material Images} , title = {Mesh Generation from 3D Multi-material Images}
, pages = {283--290} , pages = {283--290}
, url = "https://hal.inria.fr/inria-00420228" , url = "https://inria.hal.science/inria-00420228"
, x-international-audience = "yes" , x-international-audience = "yes"
, x-proceedings = "yes" , x-proceedings = "yes"
} }
@ -257,7 +257,7 @@ Boissonnat}
, pages = "1455-14645" , pages = "1455-14645"
, volume = 28 , volume = 28
, year = 2009 , year = 2009
, url = "https://hal.inria.fr/inria-00413248" , url = "https://inria.hal.science/inria-00413248"
, x-international-audience = "yes" , x-international-audience = "yes"
, x-editorial-board = "yes" , x-editorial-board = "yes"
} }
@ -361,7 +361,7 @@ Boissonnat}
TITLE = {Delaunay triangulations on orientable surfaces of low genus}, TITLE = {Delaunay triangulations on orientable surfaces of low genus},
YEAR = {2016}, YEAR = {2016},
DOI = {10.4230/LIPIcs.SoCG.2016.20}, 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}" ,school = "Universit\'e de {Nice-Sophia Antipolis}"
,address = "France" ,address = "France"
,year = 2010 ,year = 2010
,url = "https://tel.archives-ouvertes.fr/tel-00552215/" ,url = "https://theses.hal.science/tel-00552215/"
} }
@inproceedings{cgal:ccplr-redtp-10, @inproceedings{cgal:ccplr-redtp-10,
@ -545,7 +545,7 @@ note="Conference version: Symp. on Geometry Processing 2003"
, year = 2009 , year = 2009
, volume = 5757 , volume = 5757
, pages = "37--48" , 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, @inproceedings{cgal:pt-rs-14,
@ -747,7 +747,7 @@ Mourrain and Monique Teillaud"
, nickname = "ALENEX '03" , nickname = "ALENEX '03"
, year = 2003 , year = 2003
, pages = "37--44" , pages = "37--44"
, url = "https://hal.inria.fr/inria-00344517/" , url = "https://inria.hal.science/inria-00344517/"
} }
@article{ cgal:dpt-wt-02 @article{ cgal:dpt-wt-02
@ -766,7 +766,7 @@ Teillaud"
, author = "Olivier Devillers and Monique Teillaud" , author = "Olivier Devillers and Monique Teillaud"
, title = "Perturbations and Vertex Removal in a {3D Delaunay} Triangulation" , title = "Perturbations and Vertex Removal in a {3D Delaunay} Triangulation"
, booktitle = "Proc. 14th ACM-SIAM Sympos. Discrete Algorithms (SODA)" , 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 , year = 2003
, pages = "313-319" , pages = "313-319"
} }
@ -778,7 +778,7 @@ Teillaud"
, volume = 44 , volume = 44
, year = 2011 , year = 2011
, pages = "160--168" , 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" , doi = "10.1016/j.comgeo.2010.09.010"
} }
@ -845,7 +845,7 @@ Teillaud"
,school = "Universit\'e de {Nice-Sophia Antipolis}" ,school = "Universit\'e de {Nice-Sophia Antipolis}"
,address = "France" ,address = "France"
,year = 2003 ,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}}, TITLE = {{Implementing Delaunay triangulations of the Bolza surface}},
YEAR = {2017}, YEAR = {2017},
DOI = {10.4230/LIPIcs.SoCG.2017.44}, 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, @inproceedings{cgal:j-lrsspp-19,
@ -1887,13 +1887,13 @@ ABSTRACT = {We present the first complete, exact and efficient C++ implementatio
@article{cgal:btsag-asosr-16, @article{cgal:btsag-asosr-16,
TITLE = {{A Survey of Surface Reconstruction from Point Clouds}}, 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}, 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}}, JOURNAL = {{Computer Graphics Forum}},
PUBLISHER = {{Wiley}}, PUBLISHER = {{Wiley}},
PAGES = {27}, PAGES = {27},
YEAR = {2016}, YEAR = {2016},
DOI = {10.1111/cgf.12802}, 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_ID = {hal-01348404},
HAL_VERSION = {v2} HAL_VERSION = {v2}
} }
@ -2293,7 +2293,7 @@ location = {Salt Lake City, Utah, USA}
, pages = "75:1-75:9" , pages = "75:1-75:9"
, note = "SIGGRAPH '2009 Conference Proceedings" , note = "SIGGRAPH '2009 Conference Proceedings"
, volume = "28(3)" , volume = "28(3)"
, url = "https://hal.inria.fr/inria-00359288" , url = "https://inria.hal.science/inria-00359288"
, geombib = "not yet" , geombib = "not yet"
, x-editorial-board = {yes} , x-editorial-board = {yes}
, x-proceedings = {yes} , x-proceedings = {yes}
@ -2768,7 +2768,7 @@ author = "Pedro M.M. de Castro and Frederic Cazals and Sebastien Loriot and Moni
, volume = "40" , volume = "40"
, number = "1" , number = "1"
, pages = "61-78" , 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" , doi = "10.1016/j.comgeo.2007.06.003"
, x-international-audience = "yes" , x-international-audience = "yes"
, x-editorial-board = "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" , title = "Complexity of {Delaunay} triangulation for points on lower-dimensional polyhedra"
, booktitle = "Proc. 18th ACM-SIAM Sympos. Discrete Algorithms" , booktitle = "Proc. 18th ACM-SIAM Sympos. Discrete Algorithms"
, nickname = "SODA" , nickname = "SODA"
, url = "https://hal.inria.fr/inria-00182835/" , url = "https://inria.hal.science/inria-00182835/"
, year = 2007 , year = 2007
, pages = "1106--1113" , pages = "1106--1113"
} }
@ -3213,14 +3213,14 @@ pages = "207--221"
@techreport{frey:inria-00069921, @techreport{frey:inria-00069921,
TITLE = {{MEDIT : An interactive Mesh visualization Software}}, TITLE = {{MEDIT : An interactive Mesh visualization Software}},
AUTHOR = {Frey, Pascal}, AUTHOR = {Frey, Pascal},
URL = {https://hal.inria.fr/inria-00069921}, URL = {https://inria.hal.science/inria-00069921},
NUMBER = {RT-0253}, NUMBER = {RT-0253},
PAGES = {41}, PAGES = {41},
INSTITUTION = {{INRIA}}, INSTITUTION = {{INRIA}},
YEAR = {2001}, YEAR = {2001},
MONTH = Dec, MONTH = Dec,
KEYWORDS = {MESH ; VISUALIZATION ; POST-PROCESSING}, 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_ID = {inria-00069921},
HAL_VERSION = {v1} HAL_VERSION = {v1}
} }

View File

@ -5682,7 +5682,7 @@ cell neighborhood in $O(m)$ time."
, year = 2000 , year = 2000
, pages = "61--79" , pages = "61--79"
, note = "Special Issue on Computational Geometry, to appear" , note = "Special Issue on Computational Geometry, to appear"
, url = "https://hal.inria.fr/inria-00338566" , url = "https://inria.hal.science/inria-00338566"
, succeeds = "ads-rdppw-98" , succeeds = "ads-rdppw-98"
, update = "00.03 devillers" , update = "00.03 devillers"
, abstract = "We describe two problem-specific approaches to remove geometric degeneracies that we call {\it perturbing the problem} and {\it perturbing the world}. Using as our primary examples 2-d and 3-d Delaunay triangulation with Euclidean and polygonal metrics, we show that these approaches lead to relatively simple and efficient perturbations of the points that do not depend on a fixed ordering or index. Thus, they produce canonical output, which is important for producing test suites and verifiers for randomized or dynamic geometric algorithms." , abstract = "We describe two problem-specific approaches to remove geometric degeneracies that we call {\it perturbing the problem} and {\it perturbing the world}. Using as our primary examples 2-d and 3-d Delaunay triangulation with Euclidean and polygonal metrics, we show that these approaches lead to relatively simple and efficient perturbations of the points that do not depend on a fixed ordering or index. Thus, they produce canonical output, which is important for producing test suites and verifiers for randomized or dynamic geometric algorithms."
@ -11386,7 +11386,7 @@ method that uses very different techniques."
, address = "BP93, 06902 Sophia-Antipolis, France" , address = "BP93, 06902 Sophia-Antipolis, France"
, month = jun , month = jun
, year = 1993 , year = 1993
, url = "https://hal.inria.fr/inria-00074682" , url = "https://inria.hal.science/inria-00074682"
, keywords = "parallel algorithms, hypercube, multisearching, point location" , keywords = "parallel algorithms, hypercube, multisearching, point location"
, update = "95.09 devillers, 95.01 devillers, 93.09 devillers+milone+mitchell" , update = "95.09 devillers, 95.01 devillers, 93.09 devillers+milone+mitchell"
} }
@ -13129,7 +13129,7 @@ small factor with respect to floating-point calculation."
, number = 2 , number = 2
, year = 1997 , year = 1997
, pages = "111--132" , pages = "111--132"
, url = "https://hal.inria.fr/inria-00090613" , url = "https://inria.hal.science/inria-00090613"
, succeeds = "abdpy-esdus-94, abdpy-enmcs-95" , succeeds = "abdpy-esdus-94, abdpy-enmcs-95"
, cites = "bjmm-lsicg-93, c-sede-92, fm-nsala-91, f-nsa2d-92, f-smpst-89, fv-eeacg-93, gss-egbra-89, gy-frcg-86, hhk-rsops-89, kln-edtur-91, m-dpggt-89, m-vigau-88a, ps-cgi-85, si-gafpa-88, v-cca-79" , cites = "bjmm-lsicg-93, c-sede-92, fm-nsala-91, f-nsa2d-92, f-smpst-89, fv-eeacg-93, gss-egbra-89, gy-frcg-86, hhk-rsops-89, kln-edtur-91, m-dpggt-89, m-vigau-88a, ps-cgi-85, si-gafpa-88, v-cca-79"
, update = "99.11 bibrelex+devillers, 99.07 devillers, 98.07 tamassia, 97.11 bibrelex, 97.03 devillers" , update = "99.11 bibrelex+devillers, 99.07 devillers, 98.07 tamassia, 97.11 bibrelex, 97.03 devillers"
@ -13142,7 +13142,7 @@ small factor with respect to floating-point calculation."
, booktitle = "Proc. 11th Annu. ACM Sympos. Comput. Geom." , booktitle = "Proc. 11th Annu. ACM Sympos. Comput. Geom."
, year = 1995 , year = 1995
, pages = "C16--C17" , pages = "C16--C17"
, url = "https://hal.inria.fr/inria-00090613" , url = "https://inria.hal.science/inria-00090613"
, precedes = "abdpy-esdus-97" , precedes = "abdpy-esdus-97"
, cites = "ZZZ" , cites = "ZZZ"
, update = "99.11 bibrelex, 99.07 devillers, 98.03 bibrelex, 97.03 devillers, 96.01 devillers, 95.05 devillers" , update = "99.11 bibrelex, 99.07 devillers, 98.03 bibrelex, 97.03 devillers, 96.01 devillers, 95.05 devillers"
@ -18553,7 +18553,7 @@ the interior. Contains pseudocode."
, volume = 31 , volume = 31
, year = 1998 , year = 1998
, pages = "613--628" , pages = "613--628"
, url = "https://hal.inria.fr/inria-00413175" , url = "https://inria.hal.science/inria-00413175"
, succeeds = "bdkst-cmotc-96" , succeeds = "bdkst-cmotc-96"
, cites = "ast-apsgo-92, abb-amps-91, ag-mrpc-92, absstz-sacp-96, ab-pptr-88, c-pcp-83, c-oaitd-92, c-chdc-93, cghkkk-gpmem-93, ck-cppop-93, f-fapct-85, fj-gsrsm-84, g-cp-67, h-ampac-92, hkk-dvdmh-92i, hks-uevsi-93, l-rmp-91, msw-aotp-93, pt-cocpc-92, scklps-gadss-86, v-aitco-95" , cites = "ast-apsgo-92, abb-amps-91, ag-mrpc-92, absstz-sacp-96, ab-pptr-88, c-pcp-83, c-oaitd-92, c-chdc-93, cghkkk-gpmem-93, ck-cppop-93, f-fapct-85, fj-gsrsm-84, g-cp-67, h-ampac-92, hkk-dvdmh-92i, hks-uevsi-93, l-rmp-91, msw-aotp-93, pt-cocpc-92, scklps-gadss-86, v-aitco-95"
, update = "99.11 devillers, 99.07 devillers, 98.11 devillers" , update = "99.11 devillers, 99.07 devillers, 98.11 devillers"
@ -18569,7 +18569,7 @@ the interior. Contains pseudocode."
, month = aug , month = aug
, year = 1997 , year = 1997
, pages = "215--219" , pages = "215--219"
, url = "https://hal.inria.fr/inria-00413170" , url = "https://inria.hal.science/inria-00413170"
, succeeds = "bdds-cscut-95" , succeeds = "bdds-cscut-95"
, cites = "bds-lric-94, bdsty-arsol-92, cct-rpatd-92, cs-arscg-89, d-rysoa-92, gks-ricdv-92, gss-gmppt-89, m-cgitr-93, s-sfira-91" , cites = "bds-lric-94, bdsty-arsol-92, cct-rpatd-92, cs-arscg-89, d-rysoa-92, gks-ricdv-92, gss-gmppt-89, m-cgitr-93, s-sfira-91"
, update = "99.11 devillers, 99.07 devillers, 98.11 devillers, 98.07 bibrelex, 98.03 mitchell, 97.11 oostrum" , update = "99.11 devillers, 99.07 devillers, 98.11 devillers, 98.07 bibrelex, 98.03 mitchell, 97.11 oostrum"
@ -23796,7 +23796,7 @@ In [BSBL93], the synthesis problem has been solved for a
, booktitle = "Proc. 15th Annu. ACM Sympos. Comput. Geom." , booktitle = "Proc. 15th Annu. ACM Sympos. Comput. Geom."
, year = 1999 , year = 1999
, pages = "421--423" , pages = "421--423"
, url = "https://hal.inria.fr/inria-00348713/" , url = "https://inria.hal.science/inria-00348713/"
, update = "02.03 devillers, 00.03 bibrelex, 99.11 bibrelex, 99.07 devillers" , update = "02.03 devillers, 00.03 bibrelex, 99.11 bibrelex, 99.07 devillers"
} }
@ -23854,7 +23854,7 @@ In [BSBL93], the synthesis problem has been solved for a
, volume = 6 , volume = 6
, year = 1996 , year = 1996
, pages = "123--130" , pages = "123--130"
, url = "https://hal.inria.fr/inria-00413159" , url = "https://inria.hal.science/inria-00413159"
, succeeds = "bcddy-acchs-92" , succeeds = "bcddy-acchs-92"
, cites = "r-chada-92, ss-tddsp-90, m-mnfcp-70, c-ochap-91, cs-arscg-89, s-sdlpc-91, bdsty-arsol-92" , cites = "r-chada-92, ss-tddsp-90, m-mnfcp-70, c-ochap-91, cs-arscg-89, s-sdlpc-91, bdsty-arsol-92"
, update = "99.11 bibrelex+devillers, 99.07 devillers, 97.07 devillers" , update = "99.11 bibrelex+devillers, 99.07 devillers, 97.07 devillers"
@ -23896,7 +23896,7 @@ In [BSBL93], the synthesis problem has been solved for a
, number = 1 , number = 1
, year = 1996 , year = 1996
, pages = "1--14" , pages = "1--14"
, url = "https://hal.inria.fr/hal-00795075" , url = "https://inria.hal.science/hal-00795075"
, succeeds = "bcdt-osc3d-91t, bcdt-osc3d-91i" , succeeds = "bcdt-osc3d-91t, bcdt-osc3d-91i"
, cites = "ps-cgi-85, e-acg-87, a-vdsfg-91, s-chdch-86, ms-loq-92, cs-arscg-89, bdsty-arsol-92, bcdt-osc3d-91i, bm-sdcs-71, bcdt-osc3d-94t, b-srpcs-88, a-pdpaa-87, c-ig-61, p-gcc-70, dmt-ssgtu-92i, gs-ccrs-87, eg-tsa-89, b-gdg-83" , cites = "ps-cgi-85, e-acg-87, a-vdsfg-91, s-chdch-86, ms-loq-92, cs-arscg-89, bdsty-arsol-92, bcdt-osc3d-91i, bm-sdcs-71, bcdt-osc3d-94t, b-srpcs-88, a-pdpaa-87, c-ig-61, p-gcc-70, dmt-ssgtu-92i, gs-ccrs-87, eg-tsa-89, b-gdg-83"
, update = "99.11 bibrelex+devillers, 99.07 devillers, 97.03 devillers, 96.05 devillers" , update = "99.11 bibrelex+devillers, 99.07 devillers, 97.03 devillers, 96.05 devillers"
@ -23974,7 +23974,7 @@ of the output, and the extra storage is {$O(n)$}."
, publisher = "Springer-Verlag" , publisher = "Springer-Verlag"
, year = 1994 , year = 1994
, pages = "254--265" , pages = "254--265"
, url = "https://hal.inria.fr/hal-01179475" , url = "https://inria.hal.science/hal-01179475"
, precedes = "bcdry-ctbc-99" , precedes = "bcdry-ctbc-99"
, update = "99.11 bibrelex+devillers, 99.07 devillers, 98.03 mitchell, 97.03 devillers, 96.01 devillers, 95.05 agarwal" , update = "99.11 bibrelex+devillers, 99.07 devillers, 98.03 mitchell, 97.03 devillers, 96.01 devillers, 95.05 agarwal"
, abstract = " , abstract = "
@ -23994,7 +23994,7 @@ of the output, and the extra storage is {$O(n)$}."
, volume = 13 , volume = 13
, year = 1999 , year = 1999
, pages = "149--159" , pages = "149--159"
, url = "https://hal.inria.fr/inria-00413181" , url = "https://inria.hal.science/inria-00413181"
, archive = "XXX:cs.CG/9909004" , archive = "XXX:cs.CG/9909004"
, succeeds = "bcdry-ctbc-94" , succeeds = "bcdry-ctbc-94"
, cites = "agss-ltacv-89, dxcr-kmp-93, d-cmlca-57, fw-pcm-91, jc-pspmr-89, kslo-prpph-96, k-osps-83, l-rmp-91, o-mpic-87, o-ramp-92, os-plamp-94, p-masp-77, rs-mppmo-94, ss-ampr-90, w-mpav-88" , cites = "agss-ltacv-89, dxcr-kmp-93, d-cmlca-57, fw-pcm-91, jc-pspmr-89, kslo-prpph-96, k-osps-83, l-rmp-91, o-mpic-87, o-ramp-92, os-plamp-94, p-masp-77, rs-mppmo-94, ss-ampr-90, w-mpav-88"
@ -24032,7 +24032,7 @@ of the output, and the extra storage is {$O(n)$}."
, volume = 10 , volume = 10
, year = 2000 , year = 2000
, pages = "41--54" , pages = "41--54"
, url = "https://hal.inria.fr/inria-00338701" , url = "https://inria.hal.science/inria-00338701"
, archive = "XXX/cs.CG/9909005" , archive = "XXX/cs.CG/9909005"
, succeeds = "bcduy-clcst-96" , succeeds = "bcduy-clcst-96"
, cites = "abosy-fmcnp-89, b-cspps-88, bcdy-csp-95, bg-aoscf-95, cegss-cfals-93, dj-cmcnp-90, bds-lric-95, dk-ladsc-85, egs-cmcap-90, ep-mps-88, f-spcrd-86, ka-dd-84, k-eccs-79, k-osps-83, ld-gvdp-81, mt-cppna-85, m-lpltw-84, ms-sapo-95, m-idssp-92, okm-ccs-86" , cites = "abosy-fmcnp-89, b-cspps-88, bcdy-csp-95, bg-aoscf-95, cegss-cfals-93, dj-cmcnp-90, bds-lric-95, dk-ladsc-85, egs-cmcap-90, ep-mps-88, f-spcrd-86, ka-dd-84, k-eccs-79, k-osps-83, ld-gvdp-81, mt-cppna-85, m-lpltw-84, ms-sapo-95, m-idssp-92, okm-ccs-86"
@ -24094,7 +24094,7 @@ must lie in the halfplanes delimited by the query lines."
, number = "1--2" , number = "1--2"
, year = 1995 , year = 1995
, pages = "3--20" , pages = "3--20"
, url = "https://hal.inria.fr/hal-00795083" , url = "https://inria.hal.science/hal-00795083"
, succeeds = "bddp-mpsr-92,bddp-spsr-92" , succeeds = "bddp-mpsr-92,bddp-spsr-92"
, cites = "ps-cgi-85, l-knnvd-82, agss-ltacv-87, s-ksacs-91, hs-ompc-91, p-pplr-90, w-cvgnl-85, bdp-cu3ct-91" , cites = "ps-cgi-85, l-knnvd-82, agss-ltacv-87, s-ksacs-91, hs-ompc-91, p-pplr-90, w-cvgnl-85, bdp-cu3ct-91"
, update = "99.11 bibrelex+devillers, 99.07 devillers, 97.03 devillers, 96.01 devillers, 95.09 devillers" , update = "99.11 bibrelex+devillers, 99.07 devillers, 97.03 devillers, 96.01 devillers, 95.09 devillers"
@ -24155,7 +24155,7 @@ must lie in the halfplanes delimited by the query lines."
, volume = 30 , volume = 30
, year = 2000 , year = 2000
, pages = "218--246" , pages = "218--246"
, url = "https://hal.inria.fr/inria-00099289" , url = "https://inria.hal.science/inria-00099289"
, archive = "XXX/cs.CG/9909006" , archive = "XXX/cs.CG/9909006"
, succeeds = "bdl-mplr-94,bdl-srhdr-94,bdl-srhdr-94c" , succeeds = "bdl-mplr-94,bdl-srhdr-94,bdl-srhdr-94c"
, cites = "bddp-mplrs-95, dd-frspp-90, h-fuenl-89, ks-empac-90, kst-coksm-97, l-ptrmn-96, s-ksacs-91, ss-nempa-87, t-frnns-91" , cites = "bddp-mplrs-95, dd-frspp-90, h-fuenl-89, ks-empac-90, kst-coksm-97, l-ptrmn-96, s-ksacs-91, ss-nempa-87, t-frnns-91"
@ -24184,7 +24184,7 @@ must lie in the halfplanes delimited by the query lines."
, number = 2 , number = 2
, year = 1991 , year = 1991
, pages = "187--196" , pages = "187--196"
, url = "https://hal.inria.fr/inria-00167176" , url = "https://inria.hal.science/inria-00167176"
, keywords = "convex hull, motion planning, legged robot" , keywords = "convex hull, motion planning, legged robot"
, update = "99.11 bibrelex+devillers, 99.07 devillers, 97.03 devillers, 96.01 devillers, 95.09 devillers, 95.01 devillers" , update = "99.11 bibrelex+devillers, 99.07 devillers, 97.03 devillers, 96.01 devillers, 95.09 devillers, 95.01 devillers"
, abstract = "Given is a set $s$ of $n$ points, each colored with one of $k \geq 3$ colours. We say that a triangle defined by three points of $\cal s$ is 3-colored if its vertices have distinct colours. We prove in this paper that the problem of constructing the boundary of the union $\cal ts$ of all such 3-colored triangles can be done in optimal $O(n \log n)$ time." , abstract = "Given is a set $s$ of $n$ points, each colored with one of $k \geq 3$ colours. We say that a triangle defined by three points of $\cal s$ is 3-colored if its vertices have distinct colours. We prove in this paper that the problem of constructing the boundary of the union $\cal ts$ of all such 3-colored triangles can be done in optimal $O(n \log n)$ time."
@ -24210,7 +24210,7 @@ must lie in the halfplanes delimited by the query lines."
, volume = 8 , volume = 8
, year = 1992 , year = 1992
, pages = "51--71" , pages = "51--71"
, url = "https://hal.inria.fr/inria-00090675" , url = "https://inria.hal.science/inria-00090675"
, keywords = "randomized algorithms, Delaunay triangulation, semi-dynamic algorithms, arrangement of line-segments" , keywords = "randomized algorithms, Delaunay triangulation, semi-dynamic algorithms, arrangement of line-segments"
, succeeds = "bdsty-olgag-91i" , succeeds = "bdsty-olgag-91i"
, update = "99.11 bibrelex, 99.07 devillers, 98.07 bibrelex, 97.03 devillers, 96.01 devillers, 95.09 devillers, 95.01 devillers" , update = "99.11 bibrelex, 99.07 devillers, 98.07 bibrelex, 97.03 devillers, 96.01 devillers, 95.09 devillers, 95.01 devillers"
@ -24278,7 +24278,7 @@ arrangements of curves in the plane and others."
, volume = 9 , volume = 9
, year = 1993 , year = 1993
, pages = "329--356" , pages = "329--356"
, url = "https://hal.inria.fr/inria-00090668" , url = "https://inria.hal.science/inria-00090668"
, keywords = "randomized algorithms, higher order Voronoi diagrams, dynamic algorithms" , keywords = "randomized algorithms, higher order Voronoi diagrams, dynamic algorithms"
, succeeds = "bdt-olcho-90" , succeeds = "bdt-olcho-90"
, update = "99.11 bibrelex, 99.07 devillers, 97.03 devillers+schwarzkopf, 96.05 agarwal, 96.01 devillers, 95.09 devillers, 95.01 devillers, 93.09 devillers" , update = "99.11 bibrelex, 99.07 devillers, 97.03 devillers+schwarzkopf, 96.05 agarwal, 96.01 devillers, 95.09 devillers, 95.01 devillers, 93.09 devillers"
@ -24459,7 +24459,7 @@ the computational geometry algorithms library CGAL."
, booktitle = "Proc. 13th Annu. ACM Sympos. Comput. Geom." , booktitle = "Proc. 13th Annu. ACM Sympos. Comput. Geom."
, year = 1997 , year = 1997
, pages = "67--76" , pages = "67--76"
, url = "https://hal.inria.fr/inria-00073622z" , url = "https://inria.hal.science/inria-00073622z"
, precedes = "blt-smssa-98" , precedes = "blt-smssa-98"
, cites = "ab-scsp-87, ab-pptr-89, abdpy-esdus-97, bdh-qach-93, dm-mtcae-95, gs-ccrs-87, lm-cancp-93, l-spcsa-83, ZZZ" , cites = "ab-scsp-87, ab-pptr-89, abdpy-esdus-97, bdh-qach-93, dm-mtcae-95, gs-ccrs-87, lm-cancp-93, l-spcsa-83, ZZZ"
, update = "99.11 bibrelex, 99.07 devillers, 98.07 bibrelex+devillers, 97.07 efrat" , update = "99.11 bibrelex, 99.07 devillers, 98.07 bibrelex+devillers, 97.07 efrat"
@ -27482,7 +27482,7 @@ and solids on dynamically evolving grids without remeshing."
, year = 1999 , year = 1999
, pages = "173--197" , pages = "173--197"
, note = "Special Issue on Real Numbers and Computers" , note = "Special Issue on Real Numbers and Computers"
, url = "https://hal.inria.fr/inria-00344324" , url = "https://inria.hal.science/inria-00344324"
, succeeds = "bepp-cegpu-97" , succeeds = "bepp-cegpu-97"
, update = "99.07 devillers" , update = "99.07 devillers"
} }
@ -27523,7 +27523,7 @@ and solids on dynamically evolving grids without remeshing."
, booktitle = "GAMM/IMACS International Symposium on Scientific Computing, Computer Arithmetic and Validated Numerics" , booktitle = "GAMM/IMACS International Symposium on Scientific Computing, Computer Arithmetic and Validated Numerics"
, year = 1997 , year = 1997
, pages = "" , pages = ""
, url = "https://hal.inria.fr/inria-00344403/" , url = "https://inria.hal.science/inria-00344403/"
, update = "99.11 bibrelex, 99.07 devillers, 98.11 devillers" , update = "99.11 bibrelex, 99.07 devillers, 98.11 devillers"
} }
@ -44139,7 +44139,7 @@ Contains C code."
, school = "Universit\'e de Nice-Sophia Antipolis" , school = "Universit\'e de Nice-Sophia Antipolis"
, address = "France" , address = "France"
, year = 1996 , year = 1996
, url = "https://hal.inria.fr/tel-00771335" , url = "https://inria.hal.science/tel-00771335"
, keywords = "doctoral thesis" , keywords = "doctoral thesis"
, update = "99.11 bibrelex, 99.07 devillers, 98.07 devillers" , update = "99.11 bibrelex, 99.07 devillers, 98.07 devillers"
} }
@ -44150,7 +44150,7 @@ Contains C code."
, booktitle = "Proc. 7th Canad. Conf. Comput. Geom." , booktitle = "Proc. 7th Canad. Conf. Comput. Geom."
, year = 1995 , year = 1995
, pages = "49--54" , pages = "49--54"
, url = "https://hal.inria.fr/inria-00413229" , url = "https://inria.hal.science/inria-00413229"
, update = "99.11 bibrelex, 99.07 devillers, 97.03 devillers, 96.01 devillers, 95.09 jones" , update = "99.11 bibrelex, 99.07 devillers, 97.03 devillers, 96.01 devillers, 95.09 jones"
} }
@ -44261,7 +44261,7 @@ Contains C code."
, volume = 157 , volume = 157
, year = 1996 , year = 1996
, pages = "35--52" , pages = "35--52"
, url = "https://hal.inria.fr/inria-00167202" , url = "https://inria.hal.science/inria-00167202"
, cites = "as-solri-92, bd-rcuet-92, bdsty-arsol-92, bdt-schov-93, bt-hrodt-86, bt-rcdt-93, prisme-by-ga-95, ce-oails-92, cegss-cfals-93, c-ochaa-93, c-narsc-87, cms-frric-93, cs-arscg-89, prisme-2626, bds-lric-94, d-rysoa-92, dg-dbppl-93, dmt-fddtl-92, dty-dlals-92, dy-rchyd-93, gks-ricdv-92, ms-dplah-91, m-lavd-91, m-rmstd-91, m-rmstf-91, m-rmstl-91, m-cgitr-93, ol-mcp-81, ps-cgi-85, p-slpab-90, s-dmgsm-91, s-dmcpr-92, s-sfira-91, t-tdrac-93" , cites = "as-solri-92, bd-rcuet-92, bdsty-arsol-92, bdt-schov-93, bt-hrodt-86, bt-rcdt-93, prisme-by-ga-95, ce-oails-92, cegss-cfals-93, c-ochaa-93, c-narsc-87, cms-frric-93, cs-arscg-89, prisme-2626, bds-lric-94, d-rysoa-92, dg-dbppl-93, dmt-fddtl-92, dty-dlals-92, dy-rchyd-93, gks-ricdv-92, ms-dplah-91, m-lavd-91, m-rmstd-91, m-rmstf-91, m-rmstl-91, m-cgitr-93, ol-mcp-81, ps-cgi-85, p-slpab-90, s-dmgsm-91, s-dmcpr-92, s-sfira-91, t-tdrac-93"
, update = "99.11 bibrelex+devillers, 99.07 devillers, 97.03 devillers, 96.05 smid, 96.01 devillers" , update = "99.11 bibrelex+devillers, 99.07 devillers, 97.03 devillers, 96.05 smid, 96.01 devillers"
, abstract = "This paper is not a complete survey on randomized algorithms in computational geometry, but an introduction to this subject providing intuitions and references. In a first time, some basic ideas are illustrated by the sorting problem, and in a second time few results on computational geometry are briefly explained." , abstract = "This paper is not a complete survey on randomized algorithms in computational geometry, but an introduction to this subject providing intuitions and references. In a first time, some basic ideas are illustrated by the sorting problem, and in a second time few results on computational geometry are briefly explained."
@ -44286,7 +44286,7 @@ Contains C code."
, booktitle = "Proc. 14th Annu. ACM Sympos. Comput. Geom." , booktitle = "Proc. 14th Annu. ACM Sympos. Comput. Geom."
, year = 1998 , year = 1998
, pages = "106--115" , pages = "106--115"
, url = "https://hal.inria.fr/hal-01179446" , url = "https://inria.hal.science/hal-01179446"
, archive = "XXX:cs.CG/9907024" , archive = "XXX:cs.CG/9907024"
, update = "99.11 bibrelex+devillers, 99.07 devillers, 98.11 devillers" , update = "99.11 bibrelex+devillers, 99.07 devillers, 98.11 devillers"
, abstract = "We propose a new data structure to compute the Delaunay triangulation of a set of points in the plane. It combines good worst case complexity, fast behavior on real data, and small memory occupation. The location structure is organized into several levels. The lowest level just consists of the triangulation, then each level contains the triangulation of a small sample of the levels below. Point location is done by marching in a triangulation to determine the nearest neighbor of the query at that level, then the march restarts from that neighbor at the level below. Using a small sample (3 {\%}) allows a small memory occupation; the march and the use of the nearest neighbor to change levels quickly locate the query." , abstract = "We propose a new data structure to compute the Delaunay triangulation of a set of points in the plane. It combines good worst case complexity, fast behavior on real data, and small memory occupation. The location structure is organized into several levels. The lowest level just consists of the triangulation, then each level contains the triangulation of a small sample of the levels below. Point location is done by marching in a triangulation to determine the nearest neighbor of the query at that level, then the march restarts from that neighbor at the level below. Using a small sample (3 {\%}) allows a small memory occupation; the march and the use of the nearest neighbor to change levels quickly locate the query."
@ -44323,7 +44323,7 @@ Contains C code."
, year = 2009 , year = 2009
, type = "Research Report" , type = "Research Report"
, number = 7104 , number = 7104
, url = "https://hal.inria.fr/inria-00433107/" , url = "https://inria.hal.science/inria-00433107/"
} }
@inproceedings{d-ddt-99 @inproceedings{d-ddt-99
@ -44332,7 +44332,7 @@ Contains C code."
, booktitle = "Proc. 15th Annu. ACM Sympos. Comput. Geom." , booktitle = "Proc. 15th Annu. ACM Sympos. Comput. Geom."
, year = 1999 , year = 1999
, pages = "181--188" , pages = "181--188"
, url = "https://hal.inria.fr/hal-01179435" , url = "https://inria.hal.science/hal-01179435"
, archive = "XXX:cs.CG/9907023" , archive = "XXX:cs.CG/9907023"
, succeeds = "d-ddt-98" , succeeds = "d-ddt-98"
, cites = "agss-ltacv-89, a-pdpaa-87, bbp-iayed-98scg, bd-irgo-95, bm-sdcs-71, c-bvdcp-86, ads-rdppw-98, d-iirdt-98, dmt-ssgtu-92i, dp-papaf-98, es-itfwr-96, gs-cdtp-78, h-taatm-90, l-tdam-97, m-smdnt-93, msz-frplw-96, obs-stcav-92, p-gcc-70, s-chdch-86, s-nmpgc-98" , cites = "agss-ltacv-89, a-pdpaa-87, bbp-iayed-98scg, bd-irgo-95, bm-sdcs-71, c-bvdcp-86, ads-rdppw-98, d-iirdt-98, dmt-ssgtu-92i, dp-papaf-98, es-itfwr-96, gs-cdtp-78, h-taatm-90, l-tdam-97, m-smdnt-93, msz-frplw-96, obs-stcav-92, p-gcc-70, s-chdch-86, s-nmpgc-98"
@ -44349,7 +44349,7 @@ Contains C code."
, number = 1 , number = 1
, year = 1992 , year = 1992
, pages = "97--111" , pages = "97--111"
, url = "https://hal.inria.fr/inria-00167206" , url = "https://inria.hal.science/inria-00167206"
, archive = "XXX:cs.CG/9810007" , archive = "XXX:cs.CG/9810007"
, keywords = "randomized algorithms, Delaunay triangulation, skeleton, medial axis, minimum spanning tree, simple polygon" , keywords = "randomized algorithms, Delaunay triangulation, skeleton, medial axis, minimum spanning tree, simple polygon"
, succeeds = "d-sroa-91" , succeeds = "d-sroa-91"
@ -44567,7 +44567,7 @@ respectively, we obtain a speedup of $\frac p{\log p}$."
, number = 3 , number = 3
, year = 1995 , year = 1995
, pages = "157--164" , pages = "157--164"
, url = "https://hal.inria.fr/inria-00074391" , url = "https://inria.hal.science/inria-00074391"
, succeeds = "dg-iafch-94" , succeeds = "dg-iafch-94"
, cites = "a-dcgp-85, bcddy-acchs-92, r-chada-92" , cites = "a-dcgp-85, bcddy-acchs-92, r-chada-92"
, update = "99.11 devillers, 99.07 devillers, 96.01 devillers" , update = "99.11 devillers, 99.07 devillers, 96.01 devillers"
@ -44821,7 +44821,7 @@ respectively, we obtain a speedup of $\frac p{\log p}$."
, volume = 20 , volume = 20
, year = 1998 , year = 1998
, pages = "523--547" , pages = "523--547"
, url = "https://hal.inria.fr/inria-00090653" , url = "https://inria.hal.science/inria-00090653"
, archive = "XXX:cs.CG/9907029" , archive = "XXX:cs.CG/9907029"
, succeeds = "dp-papaf-96" , succeeds = "dp-papaf-96"
, cites = "b-g-87, bkmnsu-egcl-95, bms-hcvdl-94, fv-eeacg-93, lpt-rpqiv-96, mn-iga-94, y-tegc-97" , cites = "b-g-87, bkmnsu-egcl-95, bms-hcvdl-94, fv-eeacg-93, lpt-rpqiv-96, mn-iga-94, y-tegc-97"
@ -117677,7 +117677,7 @@ both for rendering and for modeling. Contains C code."
, booktitle = "Workshop on Applications of Interval Analysis to systems and Control" , booktitle = "Workshop on Applications of Interval Analysis to systems and Control"
, year = 1999 , year = 1999
, pages = "99--110" , pages = "99--110"
, url = "https://hal.inria.fr/inria-00344513" , url = "https://inria.hal.science/inria-00344513"
, update = "01.07 devillers, 00.03 devillers, 99.07 devillers" , update = "01.07 devillers, 00.03 devillers, 99.07 devillers"
} }
@ -140376,7 +140376,7 @@ code."
, publisher = "INRIA Sophia-Antipolis" , publisher = "INRIA Sophia-Antipolis"
, year = 1999 , year = 1999
, pages = "175--178" , pages = "175--178"
, url = "https://hal.inria.fr/inria-00167199" , url = "https://inria.hal.science/inria-00167199"
, update = "00.03 bibrelex+devillers, 99.07 bibrelex" , update = "00.03 bibrelex+devillers, 99.07 bibrelex"
} }
@ -151938,7 +151938,7 @@ pages = {179--189}
, number = "RR-8467" , number = "RR-8467"
, month = "Feb" , month = "Feb"
, year = "2014" , year = "2014"
, url = "https://hal.inria.fr/hal-00943409" , url = "https://inria.hal.science/hal-00943409"
} }
@article{XinWang2009improvingchenandhan, @article{XinWang2009improvingchenandhan,
@ -152006,13 +152006,13 @@ pages = {179--189}
@inproceedings{boissonnat2009Delaunay, @inproceedings{boissonnat2009Delaunay,
TITLE = {{Incremental construction of the Delaunay graph in medium dimension}}, TITLE = {{Incremental construction of the Delaunay graph in medium dimension}},
AUTHOR = {Boissonnat, Jean-Daniel and Devillers, Olivier and Hornus, Samuel}, AUTHOR = {Boissonnat, Jean-Daniel and Devillers, Olivier and Hornus, Samuel},
URL = {https://hal.inria.fr/inria-00412437}, URL = {https://inria.hal.science/inria-00412437},
BOOKTITLE = {{Annual Symposium on Computational Geometry}}, BOOKTITLE = {{Annual Symposium on Computational Geometry}},
ADDRESS = {Aarhus, Denmark}, ADDRESS = {Aarhus, Denmark},
PAGES = {208-216}, PAGES = {208-216},
YEAR = {2009}, YEAR = {2009},
MONTH = Jun, MONTH = Jun,
PDF = {https://hal.inria.fr/inria-00412437/file/socg09.pdf}, PDF = {https://inria.hal.science/inria-00412437/file/socg09.pdf},
HAL_ID = {inria-00412437}, HAL_ID = {inria-00412437},
HAL_VERSION = {v1}, HAL_VERSION = {v1},
} }

View File

@ -8,5 +8,5 @@ is available in:
Mikhail Bogdanov, Olivier Devillers, and Monique Teillaud. Hyperbolic Mikhail Bogdanov, Olivier Devillers, and Monique Teillaud. Hyperbolic
Delaunay complexes and Voronoi diagrams made practical. Journal of Delaunay complexes and Voronoi diagrams made practical. Journal of
Computational Geometry, 5(1):5685, 2014. 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. doi:10.20382/jocg.v5i1a4.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -8,15 +8,4 @@
<enableAddressBar>false</enableAddressBar> <enableAddressBar>false</enableAddressBar>
<enableFilterFunctionality>false</enableFilterFunctionality> <enableFilterFunctionality>false</enableFilterFunctionality>
</assistant> </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> </QHelpCollectionProject>

View File

@ -8,15 +8,4 @@
<enableAddressBar>false</enableAddressBar> <enableAddressBar>false</enableAddressBar>
<enableFilterFunctionality>false</enableFilterFunctionality> <enableFilterFunctionality>false</enableFilterFunctionality>
</assistant> </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> </QHelpCollectionProject>

View File

@ -553,9 +553,6 @@ create_mst_graph(
For this reason it should not be called on sorted containers. For this reason it should not be called on sorted containers.
It is based on \cgalCite{cgal:hddms-srup-92}. 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 Normals must be unit vectors
\pre `k >= 2` \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))); put(local_vpm, v, projector(get(local_vpm, v)));
// The projector can create degenerate faces // 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)) if(!remove_degenerate_faces(local_mesh))
return !has_SI; 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 #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"; 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 #endif
// expand the region to be filled // 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_mesh.h>
#include <CGAL/Polygon_mesh_processing/smooth_shape.h> #include <CGAL/Polygon_mesh_processing/smooth_shape.h>
#include <CGAL/Polygon_mesh_processing/manifoldness.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 { namespace CGAL {
/*! /*!
\ingroup PkgPolygonalSurfaceReconstruction \ingroup PkgPolygonalSurfaceReconstructionRef
\brief \brief

View File

@ -270,7 +270,9 @@ private:
Word_type image_data(int i, int j, int k) 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); return image_->value(i, j, k);
else else
return 0; return 0;

View File

@ -34,14 +34,14 @@ if(ITK_FOUND)
target_link_libraries(mesh_3_plugin PUBLIC CGAL::ITK_support) target_link_libraries(mesh_3_plugin PUBLIC CGAL::ITK_support)
endif(ITK_FOUND) 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_FOUND)
if(VTK_USE_FILE) if(VTK_USE_FILE)
include(${VTK_USE_FILE}) include(${VTK_USE_FILE})
endif() endif()
if("${VTK_VERSION_MAJOR}" GREATER "5" OR VTK_VERSION VERSION_GREATER 5) if("${VTK_VERSION_MAJOR}" GREATER "5" OR VTK_VERSION VERSION_GREATER 5)
if(TARGET VTK::IOImage) if(TARGET VTK::IOImage)
set(VTK_LIBRARIES VTK::IOImage VTK::ImagingGeneral) set(VTK_LIBRARIES VTK::IOImage VTK::ImagingGeneral VTK::IOXML)
endif() endif()
if(NOT VTK_LIBRARIES) if(NOT VTK_LIBRARIES)
message(STATUS "NOTICE: DICOM files (.dcm) require the VTK libraries, and will not be readable.") 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 <CGAL/IO/read_vtk_image_data.h>
#include <vtkNew.h> #include <vtkNew.h>
#include <vtkSmartPointer.h>
#include <vtkStringArray.h> #include <vtkStringArray.h>
#include <vtkImageData.h> #include <vtkImageData.h>
#include <vtkXMLImageDataReader.h>
#include <vtkDICOMImageReader.h> #include <vtkDICOMImageReader.h>
#include <vtkBMPReader.h> #include <vtkBMPReader.h>
#include <vtkNIFTIImageReader.h> #include <vtkNIFTIImageReader.h>
@ -77,6 +79,23 @@
#include <iostream> #include <iostream>
#include <locale> #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 // Covariant return types don't work for scalar types and we cannot
// have templates here, hence this unfortunate hack. // have templates here, hence this unfortunate hack.
@ -1089,6 +1108,7 @@ QString Io_image_plugin::nameFilters() const
return QString("Inrimage files (*.inr *.inr.gz) ;; " return QString("Inrimage files (*.inr *.inr.gz) ;; "
"Analyze files (*.hdr *.img *.img.gz) ;; " "Analyze files (*.hdr *.img *.img.gz) ;; "
"Stanford Exploration Project files (*.H *.HH) ;; " "Stanford Exploration Project files (*.H *.HH) ;; "
"VTK image files (*.vti) ;; "
"NRRD image files (*.nrrd) ;; " "NRRD image files (*.nrrd) ;; "
"NIFTI image files (*.nii *.nii.gz)"); "NIFTI image files (*.nii *.nii.gz)");
} }
@ -1121,6 +1141,7 @@ void convert(Image* image)
image->image()->wordKind = WK_FLOAT; image->image()->wordKind = WK_FLOAT;
} }
QList<Scene_item*> QList<Scene_item*>
Io_image_plugin::load(QFileInfo fileinfo, bool& ok, bool add_to_scene) 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(); QApplication::restoreOverrideCursor();
Image* image = new Image; Image* image = new Image;
// read a nrrd file QString warningMessage;
if(fileinfo.suffix() == "nrrd") // read a vti file
if(fileinfo.suffix() == "vti")
{ {
#ifdef CGAL_USE_VTK #ifdef CGAL_USE_VTK
vtkNew<vtkNrrdReader> reader; ok = load_vtk_file<vtkXMLImageDataReader>(fileinfo, image);
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
#else #else
CGAL::Three::Three::warning("VTK is required to read NRRD files"); ok = false;
delete image; warningMessage = "VTK is required to read VTI files";
return QList<Scene_item*>(); #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 #endif
} }
// read a NIFTI file // read a NIFTI file
if(fileinfo.suffix() == "nii" else if(fileinfo.suffix() == "nii"
|| ( fileinfo.suffix() == "gz" || ( fileinfo.suffix() == "gz"
&& fileinfo.fileName().endsWith(QString(".nii.gz"), Qt::CaseInsensitive))) && fileinfo.fileName().endsWith(QString(".nii.gz"), Qt::CaseInsensitive)))
{ {
#ifdef CGAL_USE_VTK #ifdef CGAL_USE_VTK
vtkNew<vtkNIFTIImageReader> reader; ok = load_vtk_file<vtkNIFTIImageReader>(fileinfo, image);
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
#else #else
CGAL::Three::Three::warning("VTK is required to read NIfTI files"); ok = false;
delete image; warningMessage = "VTK is required to read NifTI files";
return QList<Scene_item*>();
#endif #endif
} }
@ -1267,10 +1288,15 @@ Io_image_plugin::load(QFileInfo fileinfo, bool& ok, bool add_to_scene)
if(!success) if(!success)
{ {
ok = false; ok = false;
}
}
if (!ok) {
if (warningMessage.length() > 0)
CGAL::Three::Three::warning(warningMessage);
delete image; delete image;
return QList<Scene_item*>(); return QList<Scene_item*>();
} }
}
// Get display precision // Get display precision
QDialog dialog; QDialog 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 poly_items_ptr = std::get_if<Polyhedral_mesh_items>(&items.value());
auto image_items_ptr = std::get_if<Image_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; 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; 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)); ui.protectEdges->addItem(boundary_only.first, v(boundary_only.second));
} else } else
ui.protectEdges->addItem(sharp_edges.first, v(sharp_edges.second)); 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) { } else if (items->index() == IMAGE_MESH_ITEMS) {
if (polylines_item != nullptr) { if (polylines_item != nullptr) {
ui.protectEdges->addItem(input_polylines.first, QVariant::fromValue(input_polylines.second)); 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>(); const auto pe_flags = ui.protectEdges->currentData().value<Protection_flags>();
protect_borders = ui.protect->isChecked() && pe_flags.testFlag(BORDERS); protect_borders = ui.protect->isChecked() && pe_flags.testFlag(BORDERS);
protect_features = ui.protect->isChecked() && pe_flags.testFlag(FEATURES); 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 bool detect_connected_components = ui.detectComponents->isChecked();
const int manifold = (ui.manifoldCheckBox->isChecked() ? 1 : 0) + 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)); 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) SMesh* bounding_polyhedron = (bounding_sm_item == nullptr)
? nullptr ? nullptr
: bounding_sm_item->polyhedron(); : bounding_sm_item->polyhedron();
@ -825,7 +828,7 @@ void Mesh_3_plugin::mesh_3(const Mesh_type mesh_type,
{ {
thread = cgal_code_mesh_3( thread = cgal_code_mesh_3(
polyhedrons, polyhedrons,
(polylines_item == nullptr) ? plc : polylines_item->polylines, protect_polylines ? polylines_item->polylines : polylines_empty_container,
bounding_polyhedron, bounding_polyhedron,
item_name, item_name,
angle, angle,
@ -892,11 +895,11 @@ void Mesh_3_plugin::mesh_3(const Mesh_type mesh_type,
? image_item->image_weights() ? image_item->image_weights()
: nullptr; : nullptr;
Scene_polylines_item::Polylines_container plc; Scene_polylines_item::Polylines_container polylines_empty_container;
thread = cgal_code_mesh_3( thread = cgal_code_mesh_3(
pImage, pImage,
(img_polylines_item == nullptr) ? plc : img_polylines_item->polylines, (img_polylines_item == nullptr) ? polylines_empty_container : img_polylines_item->polylines,
angle, angle,
facets_sizing, facets_sizing,
facets_min_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 ) Q_FOREACH(Scene_edit_box_item::vertex* selected_vertex, selected_vertices )
{ {
int id = selected_vertex->id; 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->x = applyX(id, last_pool[id][0], dir.x());
*selected_vertex->y = applyY(id, last_pool[id][1], dir.y()); *selected_vertex->y = applyY(id, last_pool[id][1], dir.y());
*selected_vertex->z = applyZ(id, last_pool[id][2], dir.z()); *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; is_aabb_tree_built = false;
alphaSlider = NULL; alphaSlider = NULL;
is_filterable = true; 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 computeIntersection(const Primitive& facet);
void fill_aabb_tree() { void fill_aabb_tree() {
@ -528,7 +528,7 @@ struct Scene_triangulation_3_item_priv {
QVector<QColor> colors; QVector<QColor> colors;
QVector<QColor> colors_subdomains; QVector<QColor> colors_subdomains;
boost::dynamic_bitset<> visible_subdomain; 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 show_tetrahedra;
bool cut_plane_enabled; bool cut_plane_enabled;
bool is_aabb_tree_built; bool is_aabb_tree_built;
@ -1054,9 +1054,11 @@ void Scene_triangulation_3_item::draw(CGAL::Three::Viewer_interface* viewer) con
program->bind(); program->bind();
if(d->is_filterable) if(d->is_filterable)
{ {
GLuint visible_bitset_ulong[number_of_bitset]; std::array<GLuint, number_of_bitset> visible_bitset_ulong;
memcpy(visible_bitset_ulong, d->visible_biteset, number_of_bitset * sizeof(uint)); std::transform(d->visible_bitset.cbegin(), d->visible_bitset.cend(), visible_bitset_ulong.begin(),
program->setUniformValueArray("is_visible_bitset", visible_bitset_ulong, number_of_bitset); [](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->setUniformValue("is_filterable", d->is_filterable);
program->release(); program->release();
@ -1142,9 +1144,11 @@ void Scene_triangulation_3_item::drawEdges(CGAL::Three::Viewer_interface* viewer
program->bind(); program->bind();
if(d->is_filterable) if(d->is_filterable)
{ {
GLuint visible_bitset_ulong[number_of_bitset]; std::array<GLuint, number_of_bitset> visible_bitset_ulong;
memcpy(visible_bitset_ulong, d->visible_biteset, number_of_bitset * sizeof(uint)); std::transform(d->visible_bitset.cbegin(), d->visible_bitset.cend(), visible_bitset_ulong.begin(),
program->setUniformValueArray("is_visible_bitset", visible_bitset_ulong, number_of_bitset); [](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->setUniformValue("is_filterable", d->is_filterable);
program->release(); program->release();
@ -2154,7 +2158,7 @@ QColor Scene_triangulation_3_item::getSubdomainIndexColor(int i) const
void Scene_triangulation_3_item::resetVisibleSubdomain() void Scene_triangulation_3_item::resetVisibleSubdomain()
{ {
d->visible_subdomain.set(); 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) 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 i = compact_id/32;
int j = 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 bool Scene_triangulation_3_item::isVisibleSubdomain(int id) const

View File

@ -56,10 +56,7 @@ bool compute_filtering_visibility() {
uint j2 = domain2%32u; uint j2 = domain2%32u;
uint visible1 = uint(is_visible_bitset[i1]); uint visible1 = uint(is_visible_bitset[i1]);
uint visible2 = uint(is_visible_bitset[i2]); uint visible2 = uint(is_visible_bitset[i2]);
if(((visible1>>j1)&1u) == 0u && ((visible2>>j2)&1u) == 0u) return ((visible1>>j1)&1u) == 0u && ((visible2>>j2)&1u) == 0u;
{
discard;
}
} }
else else
return false; 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 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> <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. The Medit format, using file extension `.mesh`, is a format used by the Medit software.
In \cgal, it is used to represent 3D meshes. 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). 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` 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é // Author(s) : Mael Rouxel-Labbé
/** /**
* \ingroup PkgSurfaceMeshParameterization * \ingroup PkgSurfaceMeshParameterizationRef
* \file CGAL/surface_mesh_parameterization.h * \file CGAL/surface_mesh_parameterization.h
* Convenience header file including the headers for all * Convenience header file including the headers for all
* the free functions of this package. * 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/Circular_border_parameterizer_3.h>
#include <CGAL/Surface_mesh_parameterization/Square_border_parameterizer_3.h> #include <CGAL/Surface_mesh_parameterization/Square_border_parameterizer_3.h>
#include <CGAL/Surface_mesh_parameterization/Two_vertices_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; std::cout << "\t vertices = " << nbv << std::endl;
CGAL::Tetrahedral_remeshing::debug::dump_vertices_by_dimension( 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); CGAL::Tetrahedral_remeshing::debug::check_surface_patch_indices(m_c3t3);
#endif #endif
} }

View File

@ -392,15 +392,14 @@ void tetrahedral_isotropic_remeshing(
= choose_parameter(get_parameter(np, internal_np::smooth_constrained_edges), = choose_parameter(get_parameter(np, internal_np::smooth_constrained_edges),
false); false);
typedef typename Tr::Cell_handle Cell_handle;
typedef typename internal_np::Lookup_named_param_def < typedef typename internal_np::Lookup_named_param_def <
internal_np::cell_selector_t, internal_np::cell_selector_t,
NamedParameters, NamedParameters,
Constant_property_map<Cell_handle, bool>//default Tetrahedral_remeshing::internal::All_cells_selected<Tr>//default
> ::type SelectionFunctor; > ::type SelectionFunctor;
SelectionFunctor cell_select SelectionFunctor cell_select
= choose_parameter(get_parameter(np, internal_np::cell_selector), = 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 std::pair<typename Tr::Vertex_handle, typename Tr::Vertex_handle> Edge_vv;
typedef typename internal_np::Lookup_named_param_def < 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 is designed to maintain the
regular triangulation of a set of \f$ 2d\f$ weighted points. regular triangulation of a set of \f$ 2d\f$ weighted points.
It derives from the class `Triangulation_2<Traits, Tds>`. It derives from the class `Triangulation_2<Traits, Tds>`.
The functions `insert` and The functions `insert()` and
`remove` are overwritten to handle weighted points `remove()` are overwritten to handle weighted points
and maintain the regular and maintain the regular
property. property.
The function `move()` is not The function `move()` is not
@ -1184,7 +1184,7 @@ classes.
The class `Triangulation_hierarchy_2<Tr>` inherits from the The class `Triangulation_hierarchy_2<Tr>` inherits from the
triangulation type passed as template parameter `Tr`. 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. are overwritten to update the data structure at each operation.
The locate queries are also overwritten to take advantage of the data The locate queries are also overwritten to take advantage of the data
structure for a fast processing. structure for a fast processing.
@ -1327,7 +1327,7 @@ data structure.
The most efficient method to insert (weighted) points in a The most efficient method to insert (weighted) points in a
Delaunay (or regular) triangulation is to provide an iterator 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. (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 To solve this problem, in the case the vertex type of the triangulation
is a model of the concept `TriangulationVertexBaseWithInfo_2` 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 \subsection Triangulation_2UsinganIteratorOverPairs Using an Iterator Over Pairs
Each point and its information are gathered into a pair. We provide 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} \cgalExample{Triangulation_2/info_insert_with_pair_iterator_2.cpp}
\subsection Triangulation_2UsingtheBoostZipIterator Using the Boost Zip Iterator \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 side_of_power_sphere(Cell_handle c, const Weighted_point& p, bool perturb) const
{ {
CGAL_precondition(dimension() == 3); CGAL_precondition(dimension() == 3);
int i3; int i3=3;
if(! c->has_vertex(infinite_vertex(), i3)) if(! c->has_vertex(infinite_vertex(), i3))
{ {
return Bounded_side(side_of_oriented_power_sphere(c->vertex(0)->point(), 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 bool perturb) const
{ {
CGAL_precondition(dimension() >= 2); CGAL_precondition(dimension() >= 2);
int i3 = 5; int i3 = 3;
if(dimension() == 2) if(dimension() == 2)
{ {
CGAL_precondition(i == 3); CGAL_precondition(i == 3);