mirror of https://github.com/CGAL/cgal
Merge remote-tracking branch 'cgal/master' into pr/janetournois/7754
# Conflicts: # Polyhedron/demo/Polyhedron/resources/shader_c3t3.frag
This commit is contained in:
commit
5f27627e02
|
|
@ -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 */
|
||||
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
||||
|
|
|
|||
|
|
@ -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 */
|
||||
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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}.
|
||||
|
||||
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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):56–85, 2014.
|
||||
URL: https://hal.inria.fr/hal-00961390,
|
||||
URL: https://inria.hal.science/hal-00961390,
|
||||
doi:10.20382/jocg.v5i1a4.
|
||||
|
|
@ -1,7 +1,6 @@
|
|||
namespace CGAL {
|
||||
|
||||
/*!
|
||||
\ingroup kernel_affine
|
||||
\ingroup kernel_classes2
|
||||
|
||||
The class `Aff_transformation_2` represents two-dimensional affine transformations.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
*/
|
||||
/// @{
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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`
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
namespace CGAL {
|
||||
|
||||
/*!
|
||||
\ingroup PkgPolygonalSurfaceReconstruction
|
||||
\ingroup PkgPolygonalSurfaceReconstructionRef
|
||||
|
||||
\brief
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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.")
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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`
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 <
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
Loading…
Reference in New Issue