mirror of https://github.com/CGAL/cgal
spelling corrections
Some spelling corrections (Directories starting with `E`-` L`), some backward work some forward work
This commit is contained in:
parent
7a62583efa
commit
45478184de
|
|
@ -1466,7 +1466,7 @@ is_valid(const Arrangement_on_surface_2<GeometryTraits_2, TopologyTraits>& arr)
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// Compute the zone of the given x-monotone curve in the existing arrangement.
|
// Compute the zone of the given x-monotone curve in the existing arrangement.
|
||||||
// Meaning, it output the arrangment's vertices, edges and faces that the
|
// Meaning, it output the arrangement's vertices, edges and faces that the
|
||||||
// x-monotone curve intersects.
|
// x-monotone curve intersects.
|
||||||
template <typename GeometryTraits_2, typename TopologyTraits,
|
template <typename GeometryTraits_2, typename TopologyTraits,
|
||||||
typename OutputIterator, typename PointLocation>
|
typename OutputIterator, typename PointLocation>
|
||||||
|
|
|
||||||
|
|
@ -3026,7 +3026,7 @@ template <typename GeomTraits, typename TopTraits>
|
||||||
bool is_valid(const Arrangement_on_surface_2<GeomTraits, TopTraits>& arr);
|
bool is_valid(const Arrangement_on_surface_2<GeomTraits, TopTraits>& arr);
|
||||||
|
|
||||||
/*! Compute the zone of the given x-monotone curve in the existing arrangement.
|
/*! Compute the zone of the given x-monotone curve in the existing arrangement.
|
||||||
* Meaning, it output the arrangment's vertices, edges and faces that the
|
* Meaning, it output the arrangement's vertices, edges and faces that the
|
||||||
* x-monotone curve intersects.
|
* x-monotone curve intersects.
|
||||||
* \param arr The arrangement.
|
* \param arr The arrangement.
|
||||||
* \param c the x-monotone curve that its zone is computed.
|
* \param c the x-monotone curve that its zone is computed.
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ namespace boost {
|
||||||
|
|
||||||
/*! \class
|
/*! \class
|
||||||
* Specialization of the BGL graph-traits template, which serves as a (primal)
|
* Specialization of the BGL graph-traits template, which serves as a (primal)
|
||||||
* adapter for Arrangment_on_surface_2, where the valid arrangement vertices
|
* adapter for Arrangement_on_surface_2, where the valid arrangement vertices
|
||||||
* correspond to graph verices and arrangement halfedges correspond to
|
* correspond to graph verices and arrangement halfedges correspond to
|
||||||
* arrangement edges.
|
* arrangement edges.
|
||||||
* Note that non-fictitious vertices at infinity are also considered as graph
|
* Note that non-fictitious vertices at infinity are also considered as graph
|
||||||
|
|
@ -333,7 +333,7 @@ public:
|
||||||
|
|
||||||
/*! \class
|
/*! \class
|
||||||
* Specialization of the BGL graph-traits template, which serves as a (primal)
|
* Specialization of the BGL graph-traits template, which serves as a (primal)
|
||||||
* adapter for Arrangment_2, where the arrangement vertices correspond to graph
|
* adapter for Arrangement_2, where the arrangement vertices correspond to graph
|
||||||
* verices and arrangement halfedges correspond to arrangement edges.
|
* verices and arrangement halfedges correspond to arrangement edges.
|
||||||
*/
|
*/
|
||||||
template <class Traits_, class Dcel_>
|
template <class Traits_, class Dcel_>
|
||||||
|
|
|
||||||
|
|
@ -80,7 +80,7 @@ namespace CGAL {
|
||||||
// we can optimize the computations of the sign (for the has_on functor),
|
// we can optimize the computations of the sign (for the has_on functor),
|
||||||
// by computing the vector s-c and t-s, in order to use them directly on
|
// by computing the vector s-c and t-s, in order to use them directly on
|
||||||
// another compute_sign_of_cross_product function
|
// another compute_sign_of_cross_product function
|
||||||
// we can save time computing the substractions
|
// we can save time computing the subtractions
|
||||||
// the problem is: more memory space is needed
|
// the problem is: more memory space is needed
|
||||||
_sign_cross_product =
|
_sign_cross_product =
|
||||||
CGAL::SphericalFunctors::compute_sign_of_cross_product<SK>(s,t,c.center());
|
CGAL::SphericalFunctors::compute_sign_of_cross_product<SK>(s,t,c.center());
|
||||||
|
|
|
||||||
|
|
@ -1856,7 +1856,7 @@ ABSTRACT = {We present the first complete, exact and efficient C++ implementatio
|
||||||
@article{ cgal:p-plcbd-93
|
@article{ cgal:p-plcbd-93
|
||||||
,author = "B. Piper"
|
,author = "B. Piper"
|
||||||
,title = "Properties of Local Coordinates based on Dirichlet
|
,title = "Properties of Local Coordinates based on Dirichlet
|
||||||
tesselations"
|
Tessellations"
|
||||||
,journal = "Computing Suppl."
|
,journal = "Computing Suppl."
|
||||||
,year = "1993"
|
,year = "1993"
|
||||||
,volume = "8"
|
,volume = "8"
|
||||||
|
|
|
||||||
|
|
@ -230,7 +230,7 @@
|
||||||
@article{am-castd-90
|
@article{am-castd-90
|
||||||
, author = "D. J. Abel and D. M. Mark"
|
, author = "D. J. Abel and D. M. Mark"
|
||||||
, title = "A comparative analysis of some two-dimensional orderings"
|
, title = "A comparative analysis of some two-dimensional orderings"
|
||||||
, journal = "Intl. J. Geographic Informations Systems"
|
, journal = "Intl. J. Geographic Information Systems"
|
||||||
, volume = 4
|
, volume = 4
|
||||||
, year = 1990
|
, year = 1990
|
||||||
, pages = "21--31"
|
, pages = "21--31"
|
||||||
|
|
@ -10917,7 +10917,7 @@ sites with respect to the geodesic metric within a simple $n$-sided polygon."
|
||||||
|
|
||||||
@article{ab-rdt-85
|
@article{ab-rdt-85
|
||||||
, author = "Peter F. Ash and Ethan D. Bolker"
|
, author = "Peter F. Ash and Ethan D. Bolker"
|
||||||
, title = "Recognizing {Dirichlet} Tesselations"
|
, title = "Recognizing {Dirichlet} Tessellations"
|
||||||
, journal = "Geom. Dedicata"
|
, journal = "Geom. Dedicata"
|
||||||
, volume = 19
|
, volume = 19
|
||||||
, year = 1985
|
, year = 1985
|
||||||
|
|
@ -26077,7 +26077,7 @@ present a polynomial-time exact algorithm to solve this problem."
|
||||||
|
|
||||||
@article{b-cdt-81
|
@article{b-cdt-81
|
||||||
, author = "A. Bowyer"
|
, author = "A. Bowyer"
|
||||||
, title = "Computing {Dirichlet} tesselations"
|
, title = "Computing {Dirichlet} Tessellations"
|
||||||
, journal = "Comput. J."
|
, journal = "Comput. J."
|
||||||
, volume = 24
|
, volume = 24
|
||||||
, year = 1981
|
, year = 1981
|
||||||
|
|
@ -48682,7 +48682,7 @@ library."
|
||||||
|
|
||||||
@article{dcn-accac-85
|
@article{dcn-accac-85
|
||||||
, author = "J. A. Dougenik and N. R. Chrisman and D. R. Niemeyer"
|
, author = "J. A. Dougenik and N. R. Chrisman and D. R. Niemeyer"
|
||||||
, title = "An algorithm to construct continous area cartograms"
|
, title = "An algorithm to construct continuous area cartograms"
|
||||||
, journal = "Professional Geographer"
|
, journal = "Professional Geographer"
|
||||||
, volume = 37
|
, volume = 37
|
||||||
, year = 1985
|
, year = 1985
|
||||||
|
|
@ -56844,7 +56844,7 @@ points per bucket (on average) is fastest."
|
||||||
|
|
||||||
@article{f-sodt-90
|
@article{f-sodt-90
|
||||||
, author = "G. Farin"
|
, author = "G. Farin"
|
||||||
, title = "Surfaces over {Dirichlet} tesselations"
|
, title = "Surfaces over {Dirichlet} Tessellations"
|
||||||
, journal = "Comput. Aided Geom. Design"
|
, journal = "Comput. Aided Geom. Design"
|
||||||
, volume = 7
|
, volume = 7
|
||||||
, year = 1990
|
, year = 1990
|
||||||
|
|
@ -76188,7 +76188,7 @@ processing. Contains C code."
|
||||||
|
|
||||||
@article{hm-mcedr-80
|
@article{hm-mcedr-80
|
||||||
, author = "A. L. Hinde and R. E. Miles"
|
, author = "A. L. Hinde and R. E. Miles"
|
||||||
, title = "{Monte}-{Carlo} Estimates of the Distributions of the Random Polygons of the {Voronoi} Tesselation With Respect to a {Poisson} Process"
|
, title = "{Monte}-{Carlo} Estimates of the Distributions of the Random Polygons of the {Voronoi} Tessellation With Respect to a {Poisson} Process"
|
||||||
, journal = "Journal of Statistics and Computer Simulation"
|
, journal = "Journal of Statistics and Computer Simulation"
|
||||||
, volume = 10
|
, volume = 10
|
||||||
, year = 1980
|
, year = 1980
|
||||||
|
|
@ -80482,7 +80482,7 @@ fitting method."
|
||||||
@inproceedings{ikm-owlac-93
|
@inproceedings{ikm-owlac-93
|
||||||
, author = "Christian Icking and Rolf Klein and Lihong Ma"
|
, author = "Christian Icking and Rolf Klein and Lihong Ma"
|
||||||
, title = "The Optimal Way for Looking Around a Corner"
|
, title = "The Optimal Way for Looking Around a Corner"
|
||||||
, booktitle = "Proc. 4th IEEE--IEE Vehicle Navigation and Informations Systems Conference"
|
, booktitle = "Proc. 4th IEEE--IEE Vehicle Navigation and Information Systems Conference"
|
||||||
, nickname = "VNIS '93"
|
, nickname = "VNIS '93"
|
||||||
, site = "Ottawa, Canada"
|
, site = "Ottawa, Canada"
|
||||||
, year = 1993
|
, year = 1993
|
||||||
|
|
@ -92210,7 +92210,7 @@ some 2 curves cross exponentially many times."
|
||||||
|
|
||||||
@article{kkbs-p3dpv-92
|
@article{kkbs-p3dpv-92
|
||||||
, author = "S. Kumar and S. K. Kurtz and J. R. Banavar and M. G. Sharma"
|
, author = "S. Kumar and S. K. Kurtz and J. R. Banavar and M. G. Sharma"
|
||||||
, title = "Properties of a 3-Dimensional {Poisson}-{Voronoi} Tesselation: a {Monte}-{Carlo} Study"
|
, title = "Properties of a 3-Dimensional {Poisson}-{Voronoi} Tessellation: a {Monte}-{Carlo} Study"
|
||||||
, journal = "Journal Of Statistical Physics"
|
, journal = "Journal Of Statistical Physics"
|
||||||
, volume = 67
|
, volume = 67
|
||||||
, number = "3--4"
|
, number = "3--4"
|
||||||
|
|
@ -102836,7 +102836,7 @@ used in many computational geometry algorithms. Contains C++ code."
|
||||||
|
|
||||||
@incollection{m-rtgh-84
|
@incollection{m-rtgh-84
|
||||||
, author = "J. Mecke"
|
, author = "J. Mecke"
|
||||||
, title = "Random tesselations generated by hyperplanes"
|
, title = "Random Tessellations generated by hyperplanes"
|
||||||
, editor = "R. Ambartzumian and W. Weil"
|
, editor = "R. Ambartzumian and W. Weil"
|
||||||
, booktitle = "Stochastic Geometry, Geometric Statistics, Stereology"
|
, booktitle = "Stochastic Geometry, Geometric Statistics, Stereology"
|
||||||
, publisher = "B. G. Teubner"
|
, publisher = "B. G. Teubner"
|
||||||
|
|
@ -122558,7 +122558,7 @@ Previous title: On-Line Navigation Through Regions of Variable
|
||||||
|
|
||||||
@article{rohg-nrgdv-88
|
@article{rohg-nrgdv-88
|
||||||
, author = "R. Riedinger and P. Oelhafen and M. Habar and H. J. Guntherodt"
|
, author = "R. Riedinger and P. Oelhafen and M. Habar and H. J. Guntherodt"
|
||||||
, title = "A New Realization of the Global {Delaunay}-{Voronoi} Tesselation in Arbitrary Dimension"
|
, title = "A New Realization of the Global {Delaunay}-{Voronoi} Tessellation in Arbitrary Dimension"
|
||||||
, journal = "Zeitschrift Fur Physikalische Chemie Neue Folge"
|
, journal = "Zeitschrift Fur Physikalische Chemie Neue Folge"
|
||||||
, volume = 157
|
, volume = 157
|
||||||
, number = "P1"
|
, number = "P1"
|
||||||
|
|
@ -122569,7 +122569,7 @@ Previous title: On-Line Navigation Through Regions of Variable
|
||||||
|
|
||||||
@article{rohg-advt-88
|
@article{rohg-advt-88
|
||||||
, author = "R. Riedinger and P. Oelhafen and M. Habar and H. J. Guntherodt"
|
, author = "R. Riedinger and P. Oelhafen and M. Habar and H. J. Guntherodt"
|
||||||
, title = "About the {Delaunay}-{Voronoi} Tesselation"
|
, title = "About the {Delaunay}-{Voronoi} Tessellation"
|
||||||
, journal = "J. Comput. Phys."
|
, journal = "J. Comput. Phys."
|
||||||
, volume = 74
|
, volume = 74
|
||||||
, number = 1
|
, number = 1
|
||||||
|
|
@ -125934,7 +125934,7 @@ convex hulls."
|
||||||
|
|
||||||
@article{st-pwvt-88
|
@article{st-pwvt-88
|
||||||
, author = "M. Sakamoto and M. Takagi"
|
, author = "M. Sakamoto and M. Takagi"
|
||||||
, title = "Patterns of weighted {Voronoi} tesselations"
|
, title = "Patterns of weighted {Voronoi} Tessellations"
|
||||||
, journal = "Science and Form"
|
, journal = "Science and Form"
|
||||||
, volume = 3
|
, volume = 3
|
||||||
, year = 1988
|
, year = 1988
|
||||||
|
|
@ -132348,7 +132348,7 @@ Contains C code."
|
||||||
|
|
||||||
@article{sc-tdfem-85
|
@article{sc-tdfem-85
|
||||||
, author = "D. N. Shenton and Z. J. Cendes"
|
, author = "D. N. Shenton and Z. J. Cendes"
|
||||||
, title = "Three-Dimensional Finite Element Mesh Generation Using {Delaunay} Tesselation"
|
, title = "Three-Dimensional Finite Element Mesh Generation Using {Delaunay} Tessellation"
|
||||||
, journal = "IEEE Trans. Magn."
|
, journal = "IEEE Trans. Magn."
|
||||||
, volume = "MAG-21"
|
, volume = "MAG-21"
|
||||||
, number = 6
|
, number = 6
|
||||||
|
|
@ -133265,7 +133265,7 @@ Contains C code."
|
||||||
|
|
||||||
@article{s-vidt-80
|
@article{s-vidt-80
|
||||||
, author = "R. Sibson"
|
, author = "R. Sibson"
|
||||||
, title = "A vector identity for the {Dirichlet} tesselation"
|
, title = "A vector identity for the {Dirichlet} Tessellation"
|
||||||
, journal = "Math. Proc. Camb. Phil. Soc."
|
, journal = "Math. Proc. Camb. Phil. Soc."
|
||||||
, volume = 87
|
, volume = 87
|
||||||
, year = 1980
|
, year = 1980
|
||||||
|
|
@ -133301,7 +133301,7 @@ Contains C code."
|
||||||
|
|
||||||
@article{s-dtada-80
|
@article{s-dtada-80
|
||||||
, author = "R. Sibson"
|
, author = "R. Sibson"
|
||||||
, title = "The {Dirichlet} tesselation as an aid in data analysis"
|
, title = "The {Dirichlet} Tessellation as an aid in data analysis"
|
||||||
, journal = "Scand. J. Statist."
|
, journal = "Scand. J. Statist."
|
||||||
, volume = 7
|
, volume = 7
|
||||||
, year = 1980
|
, year = 1980
|
||||||
|
|
@ -137630,7 +137630,7 @@ depth."
|
||||||
, author = "K. Sugihara"
|
, author = "K. Sugihara"
|
||||||
, title = "Algorithms for computing {Voronoi} diagrams"
|
, title = "Algorithms for computing {Voronoi} diagrams"
|
||||||
, editor = "A. Okabe and B. Boots and K. Sugihara"
|
, editor = "A. Okabe and B. Boots and K. Sugihara"
|
||||||
, booktitle = "Spatial Tesselations: Concepts and Applications of Voronoi Diagrams"
|
, booktitle = "Spatial Tessellations: Concepts and Applications of Voronoi Diagrams"
|
||||||
, publisher = "John Wiley \& Sons"
|
, publisher = "John Wiley \& Sons"
|
||||||
, address = "Chichester, UK"
|
, address = "Chichester, UK"
|
||||||
, year = 1992
|
, year = 1992
|
||||||
|
|
@ -139848,7 +139848,7 @@ code."
|
||||||
|
|
||||||
@article{too-natdv-83
|
@article{too-natdv-83
|
||||||
, author = "M. Tanemura and T. Ogawa and W. Ogita"
|
, author = "M. Tanemura and T. Ogawa and W. Ogita"
|
||||||
, title = "A New Algorithm for Three-Dimensional {Voronoi} Tesselation"
|
, title = "A New Algorithm for Three-Dimensional {Voronoi} Tessellation"
|
||||||
, journal = "J. Comput. Phys."
|
, journal = "J. Comput. Phys."
|
||||||
, volume = 51
|
, volume = 51
|
||||||
, year = 1983
|
, year = 1983
|
||||||
|
|
@ -146302,7 +146302,7 @@ multiple two-dimensional obstacles of convex and concave shapes are shown."
|
||||||
|
|
||||||
@article{w-cnddt-81
|
@article{w-cnddt-81
|
||||||
, author = "D. F. Watson"
|
, author = "D. F. Watson"
|
||||||
, title = "Computing the $n$-Dimensional {Delaunay} Tesselation with Applications to {Voronoi} Polytopes"
|
, title = "Computing the $n$-Dimensional {Delaunay} Tessellation with Applications to {Voronoi} Polytopes"
|
||||||
, journal = "Comput. J."
|
, journal = "Comput. J."
|
||||||
, volume = 24
|
, volume = 24
|
||||||
, number = 2
|
, number = 2
|
||||||
|
|
@ -148056,7 +148056,7 @@ Contains C code."
|
||||||
|
|
||||||
@techreport{wl-pvatp-82
|
@techreport{wl-pvatp-82
|
||||||
, author = "H. A. G. Wijshoff and J. van Leeuwen"
|
, author = "H. A. G. Wijshoff and J. van Leeuwen"
|
||||||
, title = "Periodic versus arbitrary tesselations of the plane using polyominos of a single type"
|
, title = "Periodic versus arbitrary Tessellations of the plane using polyominos of a single type"
|
||||||
, type = "Report"
|
, type = "Report"
|
||||||
, number = "RUU-CS-82-11"
|
, number = "RUU-CS-82-11"
|
||||||
, institution = "Dept. Comput. Sci., Utrecht Univ."
|
, institution = "Dept. Comput. Sci., Utrecht Univ."
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ namespace CGAL {
|
||||||
|
|
||||||
Computes the upper envelope of a set of \f$ x\f$-monotone curves in
|
Computes the upper envelope of a set of \f$ x\f$-monotone curves in
|
||||||
\f$ \mathbb{R}^2\f$, as given by the range `[begin, end)` with the help
|
\f$ \mathbb{R}^2\f$, as given by the range `[begin, end)` with the help
|
||||||
of the arrangement traits object `traits` responsbile for their creation.
|
of the arrangement traits object `traits` responsible for their creation.
|
||||||
Reusing the same traits object improves speed if the traits class caches data.
|
Reusing the same traits object improves speed if the traits class caches data.
|
||||||
The upper envelope is represented using the output maximization diagram `diag`.
|
The upper envelope is represented using the output maximization diagram `diag`.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
\cgalPkgPicture{Envelope_2/fig/Envelope_2.png}
|
\cgalPkgPicture{Envelope_2/fig/Envelope_2.png}
|
||||||
\cgalPkgSummaryBegin
|
\cgalPkgSummaryBegin
|
||||||
\cgalPkgAuthor{Ron Wein}
|
\cgalPkgAuthor{Ron Wein}
|
||||||
\cgalPkgDesc{This package consits of functions that computes the lower (or upper) envelope of a set of arbitrary curves in 2D. The output is represented as an envelope diagram, namely a subdivision of the \f$ x\f$-axis into intervals, such that the identity of the curves that induce the envelope on each interval is unique.}
|
\cgalPkgDesc{This package consists of functions that computes the lower (or upper) envelope of a set of arbitrary curves in 2D. The output is represented as an envelope diagram, namely a subdivision of the \f$ x\f$-axis into intervals, such that the identity of the curves that induce the envelope on each interval is unique.}
|
||||||
\cgalPkgManuals{Chapter_Envelopes_of_Curves_in_2D,PkgEnvelope2Ref}
|
\cgalPkgManuals{Chapter_Envelopes_of_Curves_in_2D,PkgEnvelope2Ref}
|
||||||
\cgalPkgSummaryEnd
|
\cgalPkgSummaryEnd
|
||||||
\cgalPkgShortInfoBegin
|
\cgalPkgShortInfoBegin
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ typedef CGAL::Envelope_diagram_1<Traits_2> Diagram_1;
|
||||||
|
|
||||||
int main ()
|
int main ()
|
||||||
{
|
{
|
||||||
// Consrtuct the input segments and label them 'A' ... 'H'.
|
// Construct the input segments and label them 'A' ... 'H'.
|
||||||
std::list<Labeled_segment_2> segments;
|
std::list<Labeled_segment_2> segments;
|
||||||
|
|
||||||
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (0, 1),
|
segments.push_back (Labeled_segment_2 (Segment_2 (Point_2 (0, 1),
|
||||||
|
|
|
||||||
|
|
@ -507,7 +507,7 @@ compare_y_at_end(const X_monotone_curve_2& xcv1,
|
||||||
|
|
||||||
if (ps_y1 != ARR_INTERIOR) {
|
if (ps_y1 != ARR_INTERIOR) {
|
||||||
if (ps_y2 != ARR_INTERIOR) {
|
if (ps_y2 != ARR_INTERIOR) {
|
||||||
// The curve ends have boundary conditions with oposite signs in y,
|
// The curve ends have boundary conditions with opposite signs in y,
|
||||||
// we readily know their relative position (recall that they do not
|
// we readily know their relative position (recall that they do not
|
||||||
// instersect).
|
// instersect).
|
||||||
if ((ps_y1 == ARR_BOTTOM_BOUNDARY) && (ps_y2 == ARR_TOP_BOUNDARY))
|
if ((ps_y1 == ARR_BOTTOM_BOUNDARY) && (ps_y2 == ARR_TOP_BOUNDARY))
|
||||||
|
|
@ -678,7 +678,7 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a new vertex in the output diagram that corrsponds to the
|
// Create a new vertex in the output diagram that corresponds to the
|
||||||
// current intersection point.
|
// current intersection point.
|
||||||
if (is_in_x_range) {
|
if (is_in_x_range) {
|
||||||
CGAL_assertion(current_res != EQUAL);
|
CGAL_assertion(current_res != EQUAL);
|
||||||
|
|
@ -903,7 +903,7 @@ _merge_two_intervals(Edge_const_handle e1, bool is_leftmost1,
|
||||||
|
|
||||||
// origin_of_v could be EQUAL but the curves do not intersect.
|
// origin_of_v could be EQUAL but the curves do not intersect.
|
||||||
// This is because of the fact that v could be the endpoint of the NEXT
|
// This is because of the fact that v could be the endpoint of the NEXT
|
||||||
// curve (which is lower than the currrent curve. The second diagram, however,
|
// curve (which is lower than the current curve. The second diagram, however,
|
||||||
// has a curve that ends at v.
|
// has a curve that ends at v.
|
||||||
// For example:
|
// For example:
|
||||||
// First diagram is the segment: [(0, -1), (1, 0)]
|
// First diagram is the segment: [(0, -1), (1, 0)]
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ enum Coord_input_format
|
||||||
* \param filename The name of the input file.
|
* \param filename The name of the input file.
|
||||||
* \param format The coordinate format.
|
* \param format The coordinate format.
|
||||||
* \param segs Output: The segments.
|
* \param segs Output: The segments.
|
||||||
* \return Whether the segments were successfuly read.
|
* \return Whether the segments were successfully read.
|
||||||
*/
|
*/
|
||||||
bool read_segments (const char* filename,
|
bool read_segments (const char* filename,
|
||||||
Coord_input_format format,
|
Coord_input_format format,
|
||||||
|
|
@ -113,7 +113,7 @@ bool find_curve(I begin, I end, const Curve_2& c)
|
||||||
* Check the envelope of a given set of segments.
|
* Check the envelope of a given set of segments.
|
||||||
* \param segs The segments.
|
* \param segs The segments.
|
||||||
* \param diag The diagram.
|
* \param diag The diagram.
|
||||||
* \param is_lower Does the diagram reprsent the lower or the upper envelope.
|
* \param is_lower Does the diagram represent the lower or the upper envelope.
|
||||||
* \return Whether the diagram structure is correct.
|
* \return Whether the diagram structure is correct.
|
||||||
*/
|
*/
|
||||||
bool check_envelope (const Curve_list& segs,
|
bool check_envelope (const Curve_list& segs,
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@
|
||||||
\cgalPkgPicture{Envelope_3/fig/Envelope_3.png}
|
\cgalPkgPicture{Envelope_3/fig/Envelope_3.png}
|
||||||
\cgalPkgSummaryBegin
|
\cgalPkgSummaryBegin
|
||||||
\cgalPkgAuthors{Dan Halperin, Michal Meyerovitch, Ron Wein, and Baruch Zukerman}
|
\cgalPkgAuthors{Dan Halperin, Michal Meyerovitch, Ron Wein, and Baruch Zukerman}
|
||||||
\cgalPkgDesc{This package consits of functions that compute the lower (or upper) envelope of a set of arbitrary surfaces in 3D. The output is represented as an 2D envelope diagram, namely a planar subdivision such that the identity of the surfaces that induce the envelope over each diagram cell is unique.}
|
\cgalPkgDesc{This package consists of functions that compute the lower (or upper) envelope of a set of arbitrary surfaces in 3D. The output is represented as an 2D envelope diagram, namely a planar subdivision such that the identity of the surfaces that induce the envelope over each diagram cell is unique.}
|
||||||
\cgalPkgManuals{Chapter_Envelopes_of_Surfaces_in_3D,PkgEnvelope3Ref}
|
\cgalPkgManuals{Chapter_Envelopes_of_Surfaces_in_3D,PkgEnvelope3Ref}
|
||||||
\cgalPkgSummaryEnd
|
\cgalPkgSummaryEnd
|
||||||
\cgalPkgShortInfoBegin
|
\cgalPkgShortInfoBegin
|
||||||
|
|
|
||||||
|
|
@ -847,7 +847,7 @@ public:
|
||||||
// the curve cv (i.e. lower if computing the lower envelope, or upper if
|
// the curve cv (i.e. lower if computing the lower envelope, or upper if
|
||||||
// computing the upper envelope)
|
// computing the upper envelope)
|
||||||
// precondition: the surfaces are defined above cv
|
// precondition: the surfaces are defined above cv
|
||||||
// the choise between s1 and s2 for the envelope is the same
|
// the choice between s1 and s2 for the envelope is the same
|
||||||
// for every point in the infinitesimal region above cv
|
// for every point in the infinitesimal region above cv
|
||||||
// the surfaces are EQUAL over the curve cv
|
// the surfaces are EQUAL over the curve cv
|
||||||
Comparison_result
|
Comparison_result
|
||||||
|
|
|
||||||
|
|
@ -48,10 +48,10 @@ public:
|
||||||
typedef typename Base_traits_3::Xy_monotone_surface_3
|
typedef typename Base_traits_3::Xy_monotone_surface_3
|
||||||
Base_xy_monotone_surface_3;
|
Base_xy_monotone_surface_3;
|
||||||
|
|
||||||
// Representation of a surface with an addtional data field:
|
// Representation of a surface with an additional data field:
|
||||||
typedef _Curve_data_ex<Base_surface_3, Surface_data> Surface_3;
|
typedef _Curve_data_ex<Base_surface_3, Surface_data> Surface_3;
|
||||||
|
|
||||||
// Representation of an xy-monotone surface with an addtional data field:
|
// Representation of an xy-monotone surface with an additional data field:
|
||||||
typedef _Curve_data_ex<Base_xy_monotone_surface_3,
|
typedef _Curve_data_ex<Base_xy_monotone_surface_3,
|
||||||
Xy_monotone_surface_data> Xy_monotone_surface_3;
|
Xy_monotone_surface_data> Xy_monotone_surface_3;
|
||||||
|
|
||||||
|
|
@ -70,7 +70,7 @@ public:
|
||||||
{}
|
{}
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
/// \name Overriden functors.
|
/// \name Overridden functors.
|
||||||
//@{
|
//@{
|
||||||
|
|
||||||
class Make_xy_monotone_3
|
class Make_xy_monotone_3
|
||||||
|
|
|
||||||
|
|
@ -259,7 +259,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* Check if the triangel is vertical.
|
* Check if the triangle is vertical.
|
||||||
*/
|
*/
|
||||||
bool is_vertical() const
|
bool is_vertical() const
|
||||||
{
|
{
|
||||||
|
|
@ -457,7 +457,7 @@ public:
|
||||||
// the points should not be collinear
|
// the points should not be collinear
|
||||||
CGAL_assertion(s1 != 0);
|
CGAL_assertion(s1 != 0);
|
||||||
|
|
||||||
// should also take care for the original and trasformed direction of
|
// should also take care for the original and transformed direction of
|
||||||
// the segment
|
// the segment
|
||||||
Sign s2 = CGAL_NTS sign(w3 - w1);
|
Sign s2 = CGAL_NTS sign(w3 - w1);
|
||||||
Sign s = CGAL_NTS sign(int(s1 * s2));
|
Sign s = CGAL_NTS sign(int(s1 * s2));
|
||||||
|
|
@ -756,7 +756,7 @@ public:
|
||||||
// upper envelope)
|
// upper envelope)
|
||||||
// precondition: the surfaces are defined above cv (to the left of cv,
|
// precondition: the surfaces are defined above cv (to the left of cv,
|
||||||
// if cv is directed from min point to max point)
|
// if cv is directed from min point to max point)
|
||||||
// the choise between surf1 and surf2 for the envelope is
|
// the choice between surf1 and surf2 for the envelope is
|
||||||
// the same for every point in the infinitesimal region
|
// the same for every point in the infinitesimal region
|
||||||
// above cv
|
// above cv
|
||||||
// the surfaces are EQUAL over the curve cv
|
// the surfaces are EQUAL over the curve cv
|
||||||
|
|
@ -1019,7 +1019,7 @@ public:
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
// check whethe two xy-monotone surfaces (3D-triangles or segments)
|
// check whether two xy-monotone surfaces (3D-triangles or segments)
|
||||||
// intersect
|
// intersect
|
||||||
bool do_intersect(const Xy_monotone_surface_3& s1,
|
bool do_intersect(const Xy_monotone_surface_3& s1,
|
||||||
const Xy_monotone_surface_3& s2) const
|
const Xy_monotone_surface_3& s2) const
|
||||||
|
|
@ -1057,7 +1057,7 @@ public:
|
||||||
return Object();
|
return Object();
|
||||||
|
|
||||||
// if intersecting two segment - alculate the intersection
|
// if intersecting two segment - alculate the intersection
|
||||||
// as in the case of dimention 2
|
// as in the case of dimension 2
|
||||||
if (s1.is_segment() && s2.is_segment())
|
if (s1.is_segment() && s2.is_segment())
|
||||||
{
|
{
|
||||||
Object res = intersection_of_segments(s1, s2);
|
Object res = intersection_of_segments(s1, s2);
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ Object half_plane_half_plane_proj_intersection(const typename K::Plane_3 &h1,
|
||||||
if(assign(ray, obj))
|
if(assign(ray, obj))
|
||||||
return ray_under_linear_constraint(ray, l1, k);
|
return ray_under_linear_constraint(ray, l1, k);
|
||||||
|
|
||||||
CGAL_error(); // doesnt suppose to reach here
|
CGAL_error(); // doesn't suppose to reach here
|
||||||
return Object();
|
return Object();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -183,7 +183,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
// compute the envelope of surfaces in 3D, using the default arbitrary
|
// compute the envelope of surfaces in 3D, using the default arbitrary
|
||||||
// dividor
|
// divider
|
||||||
template <class SurfaceIterator>
|
template <class SurfaceIterator>
|
||||||
void construct_lu_envelope(SurfaceIterator begin, SurfaceIterator end,
|
void construct_lu_envelope(SurfaceIterator begin, SurfaceIterator end,
|
||||||
Minimization_diagram_2& result)
|
Minimization_diagram_2& result)
|
||||||
|
|
@ -193,7 +193,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// compute the envelope of surfaces in 3D using the given set dividor
|
// compute the envelope of surfaces in 3D using the given set divider
|
||||||
template <class SurfaceIterator, class SetDividor>
|
template <class SurfaceIterator, class SetDividor>
|
||||||
void construct_lu_envelope(SurfaceIterator begin, SurfaceIterator end,
|
void construct_lu_envelope(SurfaceIterator begin, SurfaceIterator end,
|
||||||
Minimization_diagram_2& result,
|
Minimization_diagram_2& result,
|
||||||
|
|
@ -219,7 +219,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
// compute the envelope of xy-monotone surfaces in 3D,
|
// compute the envelope of xy-monotone surfaces in 3D,
|
||||||
// using the default arbitrary dividor
|
// using the default arbitrary divider
|
||||||
template <class SurfaceIterator>
|
template <class SurfaceIterator>
|
||||||
void construct_envelope_xy_monotone(SurfaceIterator begin,
|
void construct_envelope_xy_monotone(SurfaceIterator begin,
|
||||||
SurfaceIterator end,
|
SurfaceIterator end,
|
||||||
|
|
@ -230,7 +230,7 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
// compute the envelope of xy-monotone surfaces in 3D using the given
|
// compute the envelope of xy-monotone surfaces in 3D using the given
|
||||||
// set dividor
|
// set divider
|
||||||
template <class SurfaceIterator, class SetDividor>
|
template <class SurfaceIterator, class SetDividor>
|
||||||
void construct_envelope_xy_monotone(SurfaceIterator begin,
|
void construct_envelope_xy_monotone(SurfaceIterator begin,
|
||||||
SurfaceIterator end,
|
SurfaceIterator end,
|
||||||
|
|
@ -366,7 +366,7 @@ protected:
|
||||||
he->twin()->face()->set_no_data();
|
he->twin()->face()->set_no_data();
|
||||||
}
|
}
|
||||||
|
|
||||||
// init auxiliary data for f and its boundarys.
|
// init auxiliary data for f and its boundaries.
|
||||||
for(Outer_ccb_iterator ocit = f->outer_ccbs_begin();
|
for(Outer_ccb_iterator ocit = f->outer_ccbs_begin();
|
||||||
ocit != f->outer_ccbs_end(); ocit++){
|
ocit != f->outer_ccbs_end(); ocit++){
|
||||||
Ccb_halfedge_circulator face_hec = *ocit;
|
Ccb_halfedge_circulator face_hec = *ocit;
|
||||||
|
|
@ -475,7 +475,7 @@ public:
|
||||||
{
|
{
|
||||||
Halfedge_handle hh = ei;
|
Halfedge_handle hh = ei;
|
||||||
// there must be data from at least one map, because all the surfaces
|
// there must be data from at least one map, because all the surfaces
|
||||||
// are continous
|
// are continuous
|
||||||
if (!get_aux_is_set(hh, 0) || !get_aux_is_set(hh, 1))
|
if (!get_aux_is_set(hh, 0) || !get_aux_is_set(hh, 1))
|
||||||
continue;
|
continue;
|
||||||
CGAL_assertion(get_aux_is_set(hh, 0));
|
CGAL_assertion(get_aux_is_set(hh, 0));
|
||||||
|
|
@ -604,7 +604,7 @@ public:
|
||||||
if (vh->is_decision_set())
|
if (vh->is_decision_set())
|
||||||
continue;
|
continue;
|
||||||
// there must be data from at least one map, because all the surfaces
|
// there must be data from at least one map, because all the surfaces
|
||||||
// are continous
|
// are continuous
|
||||||
CGAL_assertion(get_aux_is_set(vh, 0));
|
CGAL_assertion(get_aux_is_set(vh, 0));
|
||||||
CGAL_assertion(get_aux_is_set(vh, 1));
|
CGAL_assertion(get_aux_is_set(vh, 1));
|
||||||
CGAL_assertion(!aux_has_no_data(vh, 1) || !aux_has_no_data(vh, 0));
|
CGAL_assertion(!aux_has_no_data(vh, 1) || !aux_has_no_data(vh, 0));
|
||||||
|
|
|
||||||
|
|
@ -511,7 +511,7 @@ public:
|
||||||
// we should have a list of points where we should split the edge's curve
|
// we should have a list of points where we should split the edge's curve
|
||||||
// we then will sort the list, and split the curve
|
// we then will sort the list, and split the curve
|
||||||
|
|
||||||
// we should pay a special attension for overlaps, since we can get special
|
// we should pay a special attention for overlaps, since we can get special
|
||||||
// edges
|
// edges
|
||||||
|
|
||||||
// we associate with every point 2 flags:
|
// we associate with every point 2 flags:
|
||||||
|
|
@ -567,7 +567,7 @@ public:
|
||||||
CGAL_assertion(icv != nullptr);
|
CGAL_assertion(icv != nullptr);
|
||||||
|
|
||||||
// we will add the *icv end points to the split_points, unless
|
// we will add the *icv end points to the split_points, unless
|
||||||
// but we should be carefull with infinite curves.
|
// but we should be careful with infinite curves.
|
||||||
Arr_traits_adaptor_2<Traits> tr_adaptor(*m_traits);
|
Arr_traits_adaptor_2<Traits> tr_adaptor(*m_traits);
|
||||||
if (tr_adaptor.parameter_space_in_y_2_object()
|
if (tr_adaptor.parameter_space_in_y_2_object()
|
||||||
(*icv, ARR_MIN_END) == ARR_INTERIOR &&
|
(*icv, ARR_MIN_END) == ARR_INTERIOR &&
|
||||||
|
|
@ -825,7 +825,7 @@ protected:
|
||||||
// and we compare the surfaces to the left/right of it
|
// and we compare the surfaces to the left/right of it
|
||||||
// otherwise we compare the surfaces over an (arbitrary) edge of the face,
|
// otherwise we compare the surfaces over an (arbitrary) edge of the face,
|
||||||
// assuming this is the correct answer for the face since the surfaces are
|
// assuming this is the correct answer for the face since the surfaces are
|
||||||
// continous
|
// continuous
|
||||||
// In either case, we try to copy decision from an incident face, is possible
|
// In either case, we try to copy decision from an incident face, is possible
|
||||||
// before asking the geometric question
|
// before asking the geometric question
|
||||||
Comparison_result resolve_minimal_face(Face_handle face,
|
Comparison_result resolve_minimal_face(Face_handle face,
|
||||||
|
|
@ -1000,7 +1000,7 @@ protected:
|
||||||
const Xy_monotone_surface_3&,
|
const Xy_monotone_surface_3&,
|
||||||
Arr_all_sides_oblivious_tag)
|
Arr_all_sides_oblivious_tag)
|
||||||
{
|
{
|
||||||
CGAL_error(); // doesnt' suppose to reach here at all!!!
|
CGAL_error(); // doesn't suppose to reach here at all!!!
|
||||||
return SMALLER;
|
return SMALLER;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1035,7 +1035,7 @@ protected:
|
||||||
bool can_copy_decision_from_face_to_edge(Halfedge_handle h)
|
bool can_copy_decision_from_face_to_edge(Halfedge_handle h)
|
||||||
{
|
{
|
||||||
// can copy decision from face to its incident edge if the aux
|
// can copy decision from face to its incident edge if the aux
|
||||||
// envelopes are continous over the face and edge
|
// envelopes are continuous over the face and edge
|
||||||
return (h->get_has_equal_aux_data_in_face(0) &&
|
return (h->get_has_equal_aux_data_in_face(0) &&
|
||||||
h->get_has_equal_aux_data_in_face(1));
|
h->get_has_equal_aux_data_in_face(1));
|
||||||
}
|
}
|
||||||
|
|
@ -1043,7 +1043,7 @@ protected:
|
||||||
bool can_copy_decision_from_edge_to_vertex(Halfedge_handle h)
|
bool can_copy_decision_from_edge_to_vertex(Halfedge_handle h)
|
||||||
{
|
{
|
||||||
// can copy decision from face to its incident edge if the aux
|
// can copy decision from face to its incident edge if the aux
|
||||||
// envelopes are continous over the face and edge
|
// envelopes are continuous over the face and edge
|
||||||
return (h->get_has_equal_aux_data_in_target(0) &&
|
return (h->get_has_equal_aux_data_in_target(0) &&
|
||||||
h->get_has_equal_aux_data_in_target(1));
|
h->get_has_equal_aux_data_in_target(1));
|
||||||
}
|
}
|
||||||
|
|
@ -1113,7 +1113,7 @@ protected:
|
||||||
// intersection, there would also be intersection between the surfaces
|
// intersection, there would also be intersection between the surfaces
|
||||||
// over the face, and we know now that there isn't.
|
// over the face, and we know now that there isn't.
|
||||||
|
|
||||||
// if the first map is continous, but the second isn't (i.e. when we move
|
// if the first map is continuous, but the second isn't (i.e. when we move
|
||||||
// from the face to the edge, the envelope goes closer), then if the
|
// from the face to the edge, the envelope goes closer), then if the
|
||||||
// second map wins on the face, it wins on the edge also
|
// second map wins on the face, it wins on the edge also
|
||||||
else if (!hh->is_decision_set() &&
|
else if (!hh->is_decision_set() &&
|
||||||
|
|
@ -1125,7 +1125,7 @@ protected:
|
||||||
hh->twin()->set_decision(DAC_DECISION_SECOND);
|
hh->twin()->set_decision(DAC_DECISION_SECOND);
|
||||||
|
|
||||||
}
|
}
|
||||||
// if the second map is continous, but the first isn't, then if the
|
// if the second map is continuous, but the first isn't, then if the
|
||||||
// first map wins on the face, it wins on the edge also
|
// first map wins on the face, it wins on the edge also
|
||||||
else if (!hh->is_decision_set() &&
|
else if (!hh->is_decision_set() &&
|
||||||
face->get_decision() == DAC_DECISION_FIRST &&
|
face->get_decision() == DAC_DECISION_FIRST &&
|
||||||
|
|
@ -1164,7 +1164,7 @@ protected:
|
||||||
{
|
{
|
||||||
vh->set_decision(hh->get_decision());
|
vh->set_decision(hh->get_decision());
|
||||||
}
|
}
|
||||||
// if the first map is continous, but the second isn't (i.e. when we move
|
// if the first map is continuous, but the second isn't (i.e. when we move
|
||||||
// from the edge to the vertex, the envelope goes closer), then if the
|
// from the edge to the vertex, the envelope goes closer), then if the
|
||||||
// second map wins on the edge, it wins on the vertex also
|
// second map wins on the edge, it wins on the vertex also
|
||||||
else if (hh->get_decision() == DAC_DECISION_SECOND &&
|
else if (hh->get_decision() == DAC_DECISION_SECOND &&
|
||||||
|
|
@ -1173,7 +1173,7 @@ protected:
|
||||||
{
|
{
|
||||||
vh->set_decision(DAC_DECISION_SECOND);
|
vh->set_decision(DAC_DECISION_SECOND);
|
||||||
}
|
}
|
||||||
// if the second map is continous, but the first isn't, then if the
|
// if the second map is continuous, but the first isn't, then if the
|
||||||
// first map wins on the edge, it wins on the vertex also
|
// first map wins on the edge, it wins on the vertex also
|
||||||
else if (hh->get_decision() == DAC_DECISION_FIRST &&
|
else if (hh->get_decision() == DAC_DECISION_FIRST &&
|
||||||
!hh->get_has_equal_aux_data_in_target(0) &&
|
!hh->get_has_equal_aux_data_in_target(0) &&
|
||||||
|
|
@ -1299,7 +1299,7 @@ protected:
|
||||||
res = convert_decision_to_comparison_result(hh->get_decision());
|
res = convert_decision_to_comparison_result(hh->get_decision());
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
// if the first map is continous, but the second isn't (i.e. when we
|
// if the first map is continuous, but the second isn't (i.e. when we
|
||||||
// move from the edge to the face, the envelope goes farther), then
|
// move from the edge to the face, the envelope goes farther), then
|
||||||
// if the first map wins on the edge, it wins on the face also
|
// if the first map wins on the edge, it wins on the face also
|
||||||
else if (hh->is_decision_set() &&
|
else if (hh->is_decision_set() &&
|
||||||
|
|
@ -1310,7 +1310,7 @@ protected:
|
||||||
res = convert_decision_to_comparison_result(DAC_DECISION_FIRST);
|
res = convert_decision_to_comparison_result(DAC_DECISION_FIRST);
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
// if the second map is continous, but the first isn't, then if the
|
// if the second map is continuous, but the first isn't, then if the
|
||||||
// second map wins on the edge, it wins on the face also
|
// second map wins on the edge, it wins on the face also
|
||||||
else if (hh->is_decision_set() &&
|
else if (hh->is_decision_set() &&
|
||||||
hh->get_decision() == DAC_DECISION_SECOND &&
|
hh->get_decision() == DAC_DECISION_SECOND &&
|
||||||
|
|
@ -1342,7 +1342,7 @@ protected:
|
||||||
res = convert_decision_to_comparison_result(hh->get_decision());
|
res = convert_decision_to_comparison_result(hh->get_decision());
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
// if the first map is continous, but the second isn't (i.e. when we
|
// if the first map is continuous, but the second isn't (i.e. when we
|
||||||
// move from the edge to the face, the envelope goes farther), then
|
// move from the edge to the face, the envelope goes farther), then
|
||||||
// if the first map wins on the edge, it wins on the face also
|
// if the first map wins on the edge, it wins on the face also
|
||||||
else if (hh->is_decision_set() &&
|
else if (hh->is_decision_set() &&
|
||||||
|
|
@ -1354,7 +1354,7 @@ protected:
|
||||||
|
|
||||||
result = true;
|
result = true;
|
||||||
}
|
}
|
||||||
// if the second map is continous, but the first isn't, then if the
|
// if the second map is continuous, but the first isn't, then if the
|
||||||
// second map wins on the edge, it wins on the face also
|
// second map wins on the edge, it wins on the face also
|
||||||
else if (hh->is_decision_set() &&
|
else if (hh->is_decision_set() &&
|
||||||
hh->get_decision() == DAC_DECISION_SECOND &&
|
hh->get_decision() == DAC_DECISION_SECOND &&
|
||||||
|
|
@ -1408,7 +1408,7 @@ protected:
|
||||||
// can copy the data from the edge, since we already took care of
|
// can copy the data from the edge, since we already took care of
|
||||||
// the vertices of projected intersections
|
// the vertices of projected intersections
|
||||||
edge->source()->set_decision(edge->get_decision());
|
edge->source()->set_decision(edge->get_decision());
|
||||||
// if the first map is continous, but the second isn't (i.e. when we move
|
// if the first map is continuous, but the second isn't (i.e. when we move
|
||||||
// from the edge to the vertex, the envelope goes closer), then if the
|
// from the edge to the vertex, the envelope goes closer), then if the
|
||||||
// second map wins on the edge, it wins on the vertex also
|
// second map wins on the edge, it wins on the vertex also
|
||||||
else if (edge->get_decision() == DAC_DECISION_SECOND &&
|
else if (edge->get_decision() == DAC_DECISION_SECOND &&
|
||||||
|
|
@ -1417,7 +1417,7 @@ protected:
|
||||||
{
|
{
|
||||||
edge->source()->set_decision(DAC_DECISION_SECOND);
|
edge->source()->set_decision(DAC_DECISION_SECOND);
|
||||||
}
|
}
|
||||||
// if the second map is continous, but the first isn't, then if the
|
// if the second map is continuous, but the first isn't, then if the
|
||||||
// first map wins on the edge, it wins on the vertex also
|
// first map wins on the edge, it wins on the vertex also
|
||||||
else if (edge->get_decision() == DAC_DECISION_FIRST &&
|
else if (edge->get_decision() == DAC_DECISION_FIRST &&
|
||||||
!edge->twin()->get_has_equal_aux_data_in_target(0) &&
|
!edge->twin()->get_has_equal_aux_data_in_target(0) &&
|
||||||
|
|
@ -1432,7 +1432,7 @@ protected:
|
||||||
// can copy the data from the edge, since we already took care of
|
// can copy the data from the edge, since we already took care of
|
||||||
// the vertices of projected intersections
|
// the vertices of projected intersections
|
||||||
edge->target()->set_decision(edge->get_decision());
|
edge->target()->set_decision(edge->get_decision());
|
||||||
// if the first map is continous, but the second isn't (i.e. when we move
|
// if the first map is continuous, but the second isn't (i.e. when we move
|
||||||
// from the edge to the vertex, the envelope goes closer), then if the
|
// from the edge to the vertex, the envelope goes closer), then if the
|
||||||
// second map wins on the edge, it wins on the vertex also
|
// second map wins on the edge, it wins on the vertex also
|
||||||
else if (edge->get_decision() == DAC_DECISION_SECOND &&
|
else if (edge->get_decision() == DAC_DECISION_SECOND &&
|
||||||
|
|
@ -1441,7 +1441,7 @@ protected:
|
||||||
{
|
{
|
||||||
edge->target()->set_decision(DAC_DECISION_SECOND);
|
edge->target()->set_decision(DAC_DECISION_SECOND);
|
||||||
}
|
}
|
||||||
// if the second map is continous, but the first isn't, then if the
|
// if the second map is continuous, but the first isn't, then if the
|
||||||
// first map wins on the edge, it wins on the vertex also
|
// first map wins on the edge, it wins on the vertex also
|
||||||
else if (edge->get_decision() == DAC_DECISION_FIRST &&
|
else if (edge->get_decision() == DAC_DECISION_FIRST &&
|
||||||
!edge->get_has_equal_aux_data_in_target(0) &&
|
!edge->get_has_equal_aux_data_in_target(0) &&
|
||||||
|
|
@ -2117,7 +2117,7 @@ protected:
|
||||||
|
|
||||||
|
|
||||||
// this observer is used in the process of resolving a face
|
// this observer is used in the process of resolving a face
|
||||||
// it listens to what happpens in the copied arrangement, and copies back
|
// it listens to what happens in the copied arrangement, and copies back
|
||||||
// the actions to result arrangements very efficiently
|
// the actions to result arrangements very efficiently
|
||||||
class Copy_observer : public Md_observer
|
class Copy_observer : public Md_observer
|
||||||
{
|
{
|
||||||
|
|
@ -2263,7 +2263,7 @@ protected:
|
||||||
virtual void after_create_edge(Halfedge_handle e)
|
virtual void after_create_edge(Halfedge_handle e)
|
||||||
|
|
||||||
{
|
{
|
||||||
// a new edge e was created in small_arr, we should create a corresponing
|
// a new edge e was created in small_arr, we should create a corresponding
|
||||||
// edge in big_arr
|
// edge in big_arr
|
||||||
CGAL_assertion(map_vertices.is_defined(create_edge_v1));
|
CGAL_assertion(map_vertices.is_defined(create_edge_v1));
|
||||||
CGAL_assertion(map_vertices.is_defined(create_edge_v2));
|
CGAL_assertion(map_vertices.is_defined(create_edge_v2));
|
||||||
|
|
@ -3171,7 +3171,7 @@ protected:
|
||||||
// for using its methods
|
// for using its methods
|
||||||
Self* parent;
|
Self* parent;
|
||||||
|
|
||||||
// current type of interection curve that is inserted
|
// current type of intersection curve that is inserted
|
||||||
Multiplicity itype;
|
Multiplicity itype;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ public:
|
||||||
};
|
};
|
||||||
|
|
||||||
//! The last element is stored in the second sequence and all the other (n-1)
|
//! The last element is stored in the second sequence and all the other (n-1)
|
||||||
// elments are stored in the first sequence.
|
// elements are stored in the first sequence.
|
||||||
class Incremental_dividor
|
class Incremental_dividor
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
// of general surfaces in 3d, used for testing.
|
// of general surfaces in 3d, used for testing.
|
||||||
// The algorithm projects the surfaces on the plane, and projects all the intersections
|
// The algorithm projects the surfaces on the plane, and projects all the intersections
|
||||||
// between surfaces, to get an arrangement that is a partition of the real envelope.
|
// between surfaces, to get an arrangement that is a partition of the real envelope.
|
||||||
// Then it computes for each part in the arragement the surfaces on the envelope over it
|
// Then it computes for each part in the arrangement the surfaces on the envelope over it
|
||||||
// by comparing them all.
|
// by comparing them all.
|
||||||
|
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
@ -214,7 +214,7 @@ public:
|
||||||
for(; hi != result.halfedges_end(); ++hi, ++hi)
|
for(; hi != result.halfedges_end(); ++hi, ++hi)
|
||||||
{
|
{
|
||||||
Halfedge_handle hh = hi;
|
Halfedge_handle hh = hi;
|
||||||
// first we find the surfaces that are defined over the egde
|
// first we find the surfaces that are defined over the edge
|
||||||
std::list<Xy_monotone_surface_3> defined_surfaces;
|
std::list<Xy_monotone_surface_3> defined_surfaces;
|
||||||
for(std::size_t i=0; i<number_of_surfaces; ++i)
|
for(std::size_t i=0; i<number_of_surfaces; ++i)
|
||||||
if (is_surface_defined_over_edge(hh, surfaces[i]))
|
if (is_surface_defined_over_edge(hh, surfaces[i]))
|
||||||
|
|
@ -256,7 +256,7 @@ public:
|
||||||
* \todo The overlay compares the data using assertions. This should be
|
* \todo The overlay compares the data using assertions. This should be
|
||||||
* replaced, but since we want to terminate the overlay once we
|
* replaced, but since we want to terminate the overlay once we
|
||||||
* determine that the 2 diagrams differ, we cannot simply remove the
|
* determine that the 2 diagrams differ, we cannot simply remove the
|
||||||
* assertions. One option is to generate an exeption and catch it.
|
* assertions. One option is to generate an exception and catch it.
|
||||||
*/
|
*/
|
||||||
bool compare_diagrams(Minimization_diagram_2 &test_env,
|
bool compare_diagrams(Minimization_diagram_2 &test_env,
|
||||||
Minimization_diagram_2 &env)
|
Minimization_diagram_2 &env)
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
// The algorithm projects the surfaces on the plane, and projects all the
|
// The algorithm projects the surfaces on the plane, and projects all the
|
||||||
// intersections between surfaces, to get an arrangement that is a partition
|
// intersections between surfaces, to get an arrangement that is a partition
|
||||||
// of the real envelope.
|
// of the real envelope.
|
||||||
// Then it computes for each part in the arragement the surfaces on the
|
// Then it computes for each part in the arrangement the surfaces on the
|
||||||
// envelope over it by comparing them all.
|
// envelope over it by comparing them all.
|
||||||
|
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
@ -222,7 +222,7 @@ public:
|
||||||
Halfedge_iterator hi = result.halfedges_begin();
|
Halfedge_iterator hi = result.halfedges_begin();
|
||||||
for (; hi != result.halfedges_end(); ++hi, ++hi) {
|
for (; hi != result.halfedges_end(); ++hi, ++hi) {
|
||||||
Halfedge_handle hh = hi;
|
Halfedge_handle hh = hi;
|
||||||
// first we find the surfaces that are defined over the egde
|
// first we find the surfaces that are defined over the edge
|
||||||
std::list<Xy_monotone_surface_3> defined_surfaces;
|
std::list<Xy_monotone_surface_3> defined_surfaces;
|
||||||
for(std::size_t i=0; i<number_of_surfaces; ++i)
|
for(std::size_t i=0; i<number_of_surfaces; ++i)
|
||||||
if (is_surface_defined_over_edge(hh, surfaces[i]))
|
if (is_surface_defined_over_edge(hh, surfaces[i]))
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ Concerning the main code:
|
||||||
-------------------------
|
-------------------------
|
||||||
- Policy for overlapping comparisons : another good (faster) solution
|
- Policy for overlapping comparisons : another good (faster) solution
|
||||||
would be to set a static boolean variable to indicate a buggy comparison
|
would be to set a static boolean variable to indicate a buggy comparison
|
||||||
happenned (a la IEEE inexact flags). Drawback is that it's not thread safe,
|
happened (a la IEEE inexact flags). Drawback is that it's not thread safe,
|
||||||
but could be made safe with pthread_key_create()...
|
but could be made safe with pthread_key_create()...
|
||||||
Clearly, all this stuff is policy.
|
Clearly, all this stuff is policy.
|
||||||
struct overlap_throw {
|
struct overlap_throw {
|
||||||
|
|
@ -108,7 +108,7 @@ except we could merge stuff with Olivier's Fixed !
|
||||||
- Another approach to consider : Implement predicates taking one or several
|
- Another approach to consider : Implement predicates taking one or several
|
||||||
epsilons as additional parameters, and have the functionality found in Open
|
epsilons as additional parameters, and have the functionality found in Open
|
||||||
CasCade, using sign(a, epsilon). Then with a special traits or something,
|
CasCade, using sign(a, epsilon). Then with a special traits or something,
|
||||||
we can define sign(a,epsilon) = sign(a), and get the traditionnal template
|
we can define sign(a,epsilon) = sign(a), and get the traditional template
|
||||||
predicates from that... So that the epsilons are removed at compile time ?
|
predicates from that... So that the epsilons are removed at compile time ?
|
||||||
It would be nice to know exactly the desired functionality for epsilons...
|
It would be nice to know exactly the desired functionality for epsilons...
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -129,7 +129,7 @@ private:
|
||||||
// variable.
|
// variable.
|
||||||
// _e is a bound on the absolute error (difference between _b and the
|
// _e is a bound on the absolute error (difference between _b and the
|
||||||
// _real_ value of the variable.
|
// _real_ value of the variable.
|
||||||
// _d is the degree of the variable, it allows some additionnal checks.
|
// _d is the degree of the variable, it allows some additional checks.
|
||||||
double _b, _e;
|
double _b, _e;
|
||||||
int _d;
|
int _d;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -781,7 +781,7 @@ public:
|
||||||
|
|
||||||
// E2A()(e) and std::forward<E>(e) could be evaluated in any order, but
|
// E2A()(e) and std::forward<E>(e) could be evaluated in any order, but
|
||||||
// that's ok, "forward" itself does not modify e, it may only mark it as
|
// that's ok, "forward" itself does not modify e, it may only mark it as
|
||||||
// modifyable by the outer call, which is obviously sequenced after the inner
|
// modifiable by the outer call, which is obviously sequenced after the inner
|
||||||
// call E2A()(e).
|
// call E2A()(e).
|
||||||
template<class E>
|
template<class E>
|
||||||
Lazy_rep_0(E&& e)
|
Lazy_rep_0(E&& e)
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ protected:
|
||||||
// Exact_kernel = exact kernel that will be made lazy
|
// Exact_kernel = exact kernel that will be made lazy
|
||||||
// Kernel = lazy kernel
|
// Kernel = lazy kernel
|
||||||
|
|
||||||
// the Generic base simplies applies the generic magic functor stupidly.
|
// the Generic base simply applies the generic magic functor stupidly.
|
||||||
// then the real base fixes up a few special cases.
|
// then the real base fixes up a few special cases.
|
||||||
template < typename EK_, typename AK_, typename E2A_, typename Kernel_ >
|
template < typename EK_, typename AK_, typename E2A_, typename Kernel_ >
|
||||||
class Lazy_kernel_generic_base : protected internal::Enum_holder
|
class Lazy_kernel_generic_base : protected internal::Enum_holder
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
// This template class is a functor adaptor targetting geometric constructions.
|
// This template class is a functor adaptor targeting geometric constructions.
|
||||||
//
|
//
|
||||||
// They are "robust" in the following sense : the input and output are
|
// They are "robust" in the following sense : the input and output are
|
||||||
// approximate (doubles), but the internal computation tries to guarantees the
|
// approximate (doubles), but the internal computation tries to guarantees the
|
||||||
|
|
|
||||||
|
|
@ -117,7 +117,7 @@ To answer this need, a generalized map allows to create <I>attributes</I> which
|
||||||
<LI>an <I>i</I>-cell may have no associated <I>i</I>-attribute.
|
<LI>an <I>i</I>-cell may have no associated <I>i</I>-attribute.
|
||||||
</UL>
|
</UL>
|
||||||
|
|
||||||
Since <I>i</I>-cells are not explicitely represented in generalized maps, the association between <I>i</I>-cells and <I>i</I>-attributes is transferred to darts: if attribute <I>a</I> is associated to <I>i</I>-cell <I>c</I>, all the darts belonging to <I>c</I> are associated to <I>a</I>.
|
Since <I>i</I>-cells are not explicitly represented in generalized maps, the association between <I>i</I>-cells and <I>i</I>-attributes is transferred to darts: if attribute <I>a</I> is associated to <I>i</I>-cell <I>c</I>, all the darts belonging to <I>c</I> are associated to <I>a</I>.
|
||||||
|
|
||||||
We can see two examples of generalized maps having some attributes in \cgalFigureRef{fig_gmap_with_attribs}. In the first example (Left), a 2D generalized map has 1-attributes containing a float, for example corresponding to the length of the associated 1-cell, and 2-attributes containing a color in RGB format. In the second example (Right), a 3D generalized map has 2-attributes containing a color in RGB format.
|
We can see two examples of generalized maps having some attributes in \cgalFigureRef{fig_gmap_with_attribs}. In the first example (Left), a 2D generalized map has 1-attributes containing a float, for example corresponding to the length of the associated 1-cell, and 2-attributes containing a color in RGB format. In the second example (Right), a 3D generalized map has 2-attributes containing a color in RGB format.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@ struct Split_functor
|
||||||
// operator() automatically called after a split.
|
// operator() automatically called after a split.
|
||||||
void operator()(Face_attribute& ca1, Face_attribute& ca2)
|
void operator()(Face_attribute& ca1, Face_attribute& ca2)
|
||||||
{
|
{
|
||||||
// We need to reinitalize the weight of the two faces
|
// We need to reinitialize the weight of the two faces
|
||||||
GMap_3::size_type nb1=mmap.darts_of_cell<2>(ca1.dart()).size();
|
GMap_3::size_type nb1=mmap.darts_of_cell<2>(ca1.dart()).size();
|
||||||
GMap_3::size_type nb2=mmap.darts_of_cell<2>(ca2.dart()).size();
|
GMap_3::size_type nb2=mmap.darts_of_cell<2>(ca2.dart()).size();
|
||||||
mmap.info<2>(ca1.dart())*=(double(nb1)/(nb1+nb2));
|
mmap.info<2>(ca1.dart())*=(double(nb1)/(nb1+nb2));
|
||||||
|
|
|
||||||
|
|
@ -193,7 +193,7 @@ namespace CGAL {
|
||||||
* @param dartinfoconverter functor to transform original information of darts into information of copies
|
* @param dartinfoconverter functor to transform original information of darts into information of copies
|
||||||
* @param pointconverter functor to transform points in original map into points of copies.
|
* @param pointconverter functor to transform points in original map into points of copies.
|
||||||
* @param copy_perforated_darts true to copy also darts marked perforated (if any)
|
* @param copy_perforated_darts true to copy also darts marked perforated (if any)
|
||||||
* @param mark_perforated_darts true to mark darts wich are copies of perforated darts (if any)
|
* @param mark_perforated_darts true to mark darts which are copies of perforated darts (if any)
|
||||||
* @post *this is valid.
|
* @post *this is valid.
|
||||||
*/
|
*/
|
||||||
template <typename GMap2, typename Dart_descriptor_2,
|
template <typename GMap2, typename Dart_descriptor_2,
|
||||||
|
|
@ -1415,7 +1415,7 @@ namespace CGAL {
|
||||||
std::get<Helper::template Dimension_index<i>::value>
|
std::get<Helper::template Dimension_index<i>::value>
|
||||||
(mattribute_containers).emplace(args...);
|
(mattribute_containers).emplace(args...);
|
||||||
// Reinitialize the ref counting of the new attribute. This is normally
|
// Reinitialize the ref counting of the new attribute. This is normally
|
||||||
// not required except if create_attribute is used as "copy contructor".
|
// not required except if create_attribute is used as "copy constructor".
|
||||||
this->template init_attribute_ref_counting<i>(res);
|
this->template init_attribute_ref_counting<i>(res);
|
||||||
internal::Init_id<typename Attribute_range<i>::type>::run
|
internal::Init_id<typename Attribute_range<i>::type>::run
|
||||||
(this->template attributes<i>(), res);
|
(this->template attributes<i>(), res);
|
||||||
|
|
@ -2632,7 +2632,7 @@ namespace CGAL {
|
||||||
<Self, Map2, 0>::run(*this, map2, current, other);
|
<Self, Map2, 0>::run(*this, map2, current, other);
|
||||||
}
|
}
|
||||||
|
|
||||||
// We test if the injection is valid with its neighboors.
|
// We test if the injection is valid with its neighbours.
|
||||||
// We go out as soon as it is not satisfied.
|
// We go out as soon as it is not satisfied.
|
||||||
for (i = 0; match && i <= dimension; ++i)
|
for (i = 0; match && i <= dimension; ++i)
|
||||||
{
|
{
|
||||||
|
|
@ -3021,7 +3021,7 @@ namespace CGAL {
|
||||||
|
|
||||||
/** Test if a face is a combinatorial polygon of length alg
|
/** Test if a face is a combinatorial polygon of length alg
|
||||||
* (a cycle of alg edges alpha1 links together).
|
* (a cycle of alg edges alpha1 links together).
|
||||||
* @param adart an intial dart
|
* @param adart an initial dart
|
||||||
* @return true iff the face containing adart is a polygon of length alg.
|
* @return true iff the face containing adart is a polygon of length alg.
|
||||||
*/
|
*/
|
||||||
bool is_face_combinatorial_polygon(Dart_const_descriptor adart,
|
bool is_face_combinatorial_polygon(Dart_const_descriptor adart,
|
||||||
|
|
@ -3115,7 +3115,7 @@ namespace CGAL {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Test if a volume is a combinatorial tetrahedron.
|
/** Test if a volume is a combinatorial tetrahedron.
|
||||||
* @param adart an intial dart
|
* @param adart an initial dart
|
||||||
* @return true iff the volume containing adart is a combinatorial tetrahedron.
|
* @return true iff the volume containing adart is a combinatorial tetrahedron.
|
||||||
*/
|
*/
|
||||||
bool is_volume_combinatorial_tetrahedron(Dart_const_descriptor d1) const
|
bool is_volume_combinatorial_tetrahedron(Dart_const_descriptor d1) const
|
||||||
|
|
@ -3192,7 +3192,7 @@ namespace CGAL {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Test if a volume is a combinatorial hexahedron.
|
/** Test if a volume is a combinatorial hexahedron.
|
||||||
* @param adart an intial dart
|
* @param adart an initial dart
|
||||||
* @return true iff the volume containing adart is a combinatorial hexahedron.
|
* @return true iff the volume containing adart is a combinatorial hexahedron.
|
||||||
*/
|
*/
|
||||||
bool is_volume_combinatorial_hexahedron(Dart_const_descriptor d1) const
|
bool is_volume_combinatorial_hexahedron(Dart_const_descriptor d1) const
|
||||||
|
|
@ -3385,7 +3385,7 @@ namespace CGAL {
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Insert a vertex in the given 2-cell which is split in triangles,
|
/** Insert a vertex in the given 2-cell which is split in triangles,
|
||||||
* once for each inital edge of the facet.
|
* once for each initial edge of the facet.
|
||||||
* @param adart a dart of the facet to triangulate.
|
* @param adart a dart of the facet to triangulate.
|
||||||
* @return A dart incident to the new vertex.
|
* @return A dart incident to the new vertex.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@
|
||||||
* GMap_group_attribute_functor<GMap> to group the <i>-attributes of two
|
* GMap_group_attribute_functor<GMap> to group the <i>-attributes of two
|
||||||
* given i-cells (except for j-adim). If one i-attribute is nullptr, we set the
|
* given i-cells (except for j-adim). If one i-attribute is nullptr, we set the
|
||||||
* darts of its i-cell to the second attribute. If both i-attributes are
|
* darts of its i-cell to the second attribute. If both i-attributes are
|
||||||
* non nullptr, we overide all the i-attribute of the second i-cell to the
|
* non nullptr, we override all the i-attribute of the second i-cell to the
|
||||||
* first i-attribute.
|
* first i-attribute.
|
||||||
*
|
*
|
||||||
* GMap_degroup_attribute_functor_run<GMap> to degroup one i-attributes in two
|
* GMap_degroup_attribute_functor_run<GMap> to degroup one i-attributes in two
|
||||||
|
|
|
||||||
|
|
@ -658,7 +658,7 @@ struct Address_of {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
}//namesapce internal
|
}//namespace internal
|
||||||
|
|
||||||
template <class Point_2,
|
template <class Point_2,
|
||||||
class Triangle_2=typename Kernel_traits<Point_2>::Kernel::Triangle_2,
|
class Triangle_2=typename Kernel_traits<Point_2>::Kernel::Triangle_2,
|
||||||
|
|
|
||||||
|
|
@ -221,7 +221,7 @@ void random_convex_hull_in_disc_2(std::size_t n, double radius, std::list<typena
|
||||||
boost::variate_generator<
|
boost::variate_generator<
|
||||||
GEN&, boost::binomial_distribution<long> > bin(gen, dbin);
|
GEN&, boost::binomial_distribution<long> > bin(gen, dbin);
|
||||||
|
|
||||||
// How many points are falling in the small disc and wont be generated:
|
// How many points are falling in the small disc and won't be generated:
|
||||||
long k_disc = bin();
|
long k_disc = bin();
|
||||||
simulated_points += k_disc;
|
simulated_points += k_disc;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ public:
|
||||||
|
|
||||||
// Returns the midpoint (under the L1 metric) that is on the rectangle
|
// Returns the midpoint (under the L1 metric) that is on the rectangle
|
||||||
// defined by the two points (the rectangle can be degenerate).
|
// defined by the two points (the rectangle can be degenerate).
|
||||||
// As there are to enpoints, the index determines which is returned
|
// As there are to endpoints, the index determines which is returned
|
||||||
static Point_2 midpoint(const Point_2& p1, const Point_2& p2, std::size_t index) {
|
static Point_2 midpoint(const Point_2& p1, const Point_2& p2, std::size_t index) {
|
||||||
const Point_2 *pp1;
|
const Point_2 *pp1;
|
||||||
const Point_2 *pp2;
|
const Point_2 *pp2;
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ objects in <I>Qt</I>, and the other way round. Note that some objects have no eq
|
||||||
For example the `CGAL::Circle_2<K>` cannot be converted to something in Qt,
|
For example the `CGAL::Circle_2<K>` cannot be converted to something in Qt,
|
||||||
and the unbounded objects `CGAL::Ray_2<K>` and `CGAL::Line_2<K>` are clipped.
|
and the unbounded objects `CGAL::Ray_2<K>` and `CGAL::Line_2<K>` are clipped.
|
||||||
Note also that \cgal and <I>Qt</I> sometimes also use the same word for different things.
|
Note also that \cgal and <I>Qt</I> sometimes also use the same word for different things.
|
||||||
For example <I>line</I> denotes an unbounded line in \cgal, wheras it denotes a bounded
|
For example <I>line</I> denotes an unbounded line in \cgal, whereas it denotes a bounded
|
||||||
segment in <I>Qt</I>.
|
segment in <I>Qt</I>.
|
||||||
|
|
||||||
\tparam K must be a model of `Kernel`.
|
\tparam K must be a model of `Kernel`.
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@ namespace internal
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Specialization when K==Local_kernel, because there is no need of convertion here.
|
// Specialization when K==Local_kernel, because there is no need of conversion here.
|
||||||
template<typename Local_kernel>
|
template<typename Local_kernel>
|
||||||
struct Geom_utils<Local_kernel, Local_kernel>
|
struct Geom_utils<Local_kernel, Local_kernel>
|
||||||
{
|
{
|
||||||
|
|
@ -577,7 +577,7 @@ protected:
|
||||||
add_gouraud_normal(m_vertex_normals_for_face[i]);
|
add_gouraud_normal(m_vertex_normals_for_face[i]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ // Here user does not provide all vertex normals: we use face normal istead
|
{ // Here user does not provide all vertex normals: we use face normal instead
|
||||||
// and thus we will not be able to use Gouraud
|
// and thus we will not be able to use Gouraud
|
||||||
add_gouraud_normal(normal);
|
add_gouraud_normal(normal);
|
||||||
}
|
}
|
||||||
|
|
@ -703,7 +703,7 @@ protected:
|
||||||
else { ++(edges[p1][p2]); }
|
else { ++(edges[p1][p2]); }
|
||||||
}
|
}
|
||||||
|
|
||||||
// (1) We insert all the edges as contraint in the CDT.
|
// (1) We insert all the edges as constraint in the CDT.
|
||||||
typename CDT::Vertex_handle previous=nullptr, first=nullptr;
|
typename CDT::Vertex_handle previous=nullptr, first=nullptr;
|
||||||
for (unsigned int i=0; i<m_points_of_face.size(); ++i)
|
for (unsigned int i=0; i<m_points_of_face.size(); ++i)
|
||||||
{
|
{
|
||||||
|
|
@ -872,7 +872,7 @@ protected:
|
||||||
}
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// Types usefull for triangulation
|
// Types useful for triangulation
|
||||||
struct Vertex_info
|
struct Vertex_info
|
||||||
{
|
{
|
||||||
Local_vector v;
|
Local_vector v;
|
||||||
|
|
|
||||||
|
|
@ -1781,7 +1781,7 @@ protected:
|
||||||
|
|
||||||
QGLBuffer buffers[NB_VBO_BUFFERS];
|
QGLBuffer buffers[NB_VBO_BUFFERS];
|
||||||
|
|
||||||
// The following enum gives the indices of the differents vao.
|
// The following enum gives the indices of the different vao.
|
||||||
enum
|
enum
|
||||||
{ VAO_MONO_POINTS=0,
|
{ VAO_MONO_POINTS=0,
|
||||||
VAO_COLORED_POINTS,
|
VAO_COLORED_POINTS,
|
||||||
|
|
|
||||||
|
|
@ -58,12 +58,12 @@ protected:
|
||||||
bool closed = true);
|
bool closed = true);
|
||||||
|
|
||||||
|
|
||||||
// mousePressEvent returns true iff the event is consummed
|
// mousePressEvent returns true iff the event is consumed
|
||||||
bool mousePressEvent(QGraphicsSceneMouseEvent *event);
|
bool mousePressEvent(QGraphicsSceneMouseEvent *event);
|
||||||
|
|
||||||
void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
|
void mouseMoveEvent(QGraphicsSceneMouseEvent *event);
|
||||||
|
|
||||||
// keyPressEvent returns true iff the event is consummed
|
// keyPressEvent returns true iff the event is consumed
|
||||||
bool keyPressEvent(QKeyEvent *event);
|
bool keyPressEvent(QKeyEvent *event);
|
||||||
|
|
||||||
void rubberbands(const QPointF& p);
|
void rubberbands(const QPointF& p);
|
||||||
|
|
|
||||||
|
|
@ -1301,7 +1301,7 @@ void Camera::setFromProjectionMatrix(const qreal matrix[12]) {
|
||||||
// divide the first 3 coordinates by the 4th one.
|
// divide the first 3 coordinates by the 4th one.
|
||||||
|
|
||||||
// We derive the 4 dimensional vectorial product formula from the
|
// We derive the 4 dimensional vectorial product formula from the
|
||||||
// computation of a 4x4 determinant that is developped according to
|
// computation of a 4x4 determinant that is developed according to
|
||||||
// its 4th column. This implies some 3x3 determinants.
|
// its 4th column. This implies some 3x3 determinants.
|
||||||
const Vec cam_pos =
|
const Vec cam_pos =
|
||||||
Vec(det(matrix[ind(0, 1)], matrix[ind(0, 2)], matrix[ind(0, 3)],
|
Vec(det(matrix[ind(0, 1)], matrix[ind(0, 2)], matrix[ind(0, 3)],
|
||||||
|
|
|
||||||
|
|
@ -51,5 +51,5 @@ void traverse_resources(const QString& name, const QString& dirname, int indent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namesapce Qt
|
} // namespace Qt
|
||||||
} // namespace CGAL
|
} // namespace CGAL
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@ class Constraint;
|
||||||
the Frame. The default constraint() is \c nullptr resulting in no filtering. Use
|
the Frame. The default constraint() is \c nullptr resulting in no filtering. Use
|
||||||
setConstraint() to attach a Constraint to a frame.
|
setConstraint() to attach a Constraint to a frame.
|
||||||
|
|
||||||
Constraints are especially usefull for the ManipulatedFrame instances, in
|
Constraints are especially useful for the ManipulatedFrame instances, in
|
||||||
order to forbid some mouse motions. See the <a
|
order to forbid some mouse motions. See the <a
|
||||||
href="../examples/constrainedFrame.html">constrainedFrame</a>, <a
|
href="../examples/constrainedFrame.html">constrainedFrame</a>, <a
|
||||||
href="../examples/constrainedCamera.html">constrainedCamera</a> and <a
|
href="../examples/constrainedCamera.html">constrainedCamera</a> and <a
|
||||||
|
|
@ -119,7 +119,7 @@ class Constraint;
|
||||||
<h3>Derived classes</h3>
|
<h3>Derived classes</h3>
|
||||||
|
|
||||||
The ManipulatedFrame class inherits Frame and implements a mouse motion
|
The ManipulatedFrame class inherits Frame and implements a mouse motion
|
||||||
convertion, so that a Frame (and hence an object) can be manipulated in the
|
conversion, so that a Frame (and hence an object) can be manipulated in the
|
||||||
scene with the mouse.
|
scene with the mouse.
|
||||||
|
|
||||||
\nosubgrouping */
|
\nosubgrouping */
|
||||||
|
|
|
||||||
|
|
@ -717,7 +717,7 @@ bool Frame::settingAsReferenceFrameWillCreateALoop(const Frame *const frame) {
|
||||||
/*! Returns the Frame coordinates of a point \p src defined in the world
|
/*! Returns the Frame coordinates of a point \p src defined in the world
|
||||||
coordinate system (converts from world to Frame).
|
coordinate system (converts from world to Frame).
|
||||||
|
|
||||||
inverseCoordinatesOf() performs the inverse convertion. transformOf() converts
|
inverseCoordinatesOf() performs the inverse conversion. transformOf() converts
|
||||||
3D vectors instead of 3D coordinates.
|
3D vectors instead of 3D coordinates.
|
||||||
|
|
||||||
See the <a href="../examples/frameTransform.html">frameTransform example</a>
|
See the <a href="../examples/frameTransform.html">frameTransform example</a>
|
||||||
|
|
@ -733,7 +733,7 @@ Vec Frame::coordinatesOf(const Vec &src) const {
|
||||||
/*! Returns the world coordinates of the point whose position in the Frame
|
/*! Returns the world coordinates of the point whose position in the Frame
|
||||||
coordinate system is \p src (converts from Frame to world).
|
coordinate system is \p src (converts from Frame to world).
|
||||||
|
|
||||||
coordinatesOf() performs the inverse convertion. Use inverseTransformOf() to
|
coordinatesOf() performs the inverse conversion. Use inverseTransformOf() to
|
||||||
transform 3D vectors instead of 3D coordinates. */
|
transform 3D vectors instead of 3D coordinates. */
|
||||||
CGAL_INLINE_FUNCTION
|
CGAL_INLINE_FUNCTION
|
||||||
Vec Frame::inverseCoordinatesOf(const Vec &src) const {
|
Vec Frame::inverseCoordinatesOf(const Vec &src) const {
|
||||||
|
|
@ -749,7 +749,7 @@ Vec Frame::inverseCoordinatesOf(const Vec &src) const {
|
||||||
/*! Returns the Frame coordinates of a point \p src defined in the
|
/*! Returns the Frame coordinates of a point \p src defined in the
|
||||||
referenceFrame() coordinate system (converts from referenceFrame() to Frame).
|
referenceFrame() coordinate system (converts from referenceFrame() to Frame).
|
||||||
|
|
||||||
localInverseCoordinatesOf() performs the inverse convertion. See also
|
localInverseCoordinatesOf() performs the inverse conversion. See also
|
||||||
localTransformOf(). */
|
localTransformOf(). */
|
||||||
CGAL_INLINE_FUNCTION
|
CGAL_INLINE_FUNCTION
|
||||||
Vec Frame::localCoordinatesOf(const Vec &src) const {
|
Vec Frame::localCoordinatesOf(const Vec &src) const {
|
||||||
|
|
@ -759,7 +759,7 @@ Vec Frame::localCoordinatesOf(const Vec &src) const {
|
||||||
/*! Returns the referenceFrame() coordinates of a point \p src defined in the
|
/*! Returns the referenceFrame() coordinates of a point \p src defined in the
|
||||||
Frame coordinate system (converts from Frame to referenceFrame()).
|
Frame coordinate system (converts from Frame to referenceFrame()).
|
||||||
|
|
||||||
localCoordinatesOf() performs the inverse convertion. See also
|
localCoordinatesOf() performs the inverse conversion. See also
|
||||||
localInverseTransformOf(). */
|
localInverseTransformOf(). */
|
||||||
CGAL_INLINE_FUNCTION
|
CGAL_INLINE_FUNCTION
|
||||||
Vec Frame::localInverseCoordinatesOf(const Vec &src) const {
|
Vec Frame::localInverseCoordinatesOf(const Vec &src) const {
|
||||||
|
|
|
||||||
|
|
@ -290,7 +290,7 @@ private Q_SLOTS:
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Copy constructor and opertor= are declared private and undefined
|
// Copy constructor and operator= are declared private and undefined
|
||||||
// Prevents everyone from trying to use them
|
// Prevents everyone from trying to use them
|
||||||
// KeyFrameInterpolator(const KeyFrameInterpolator& kfi);
|
// KeyFrameInterpolator(const KeyFrameInterpolator& kfi);
|
||||||
// KeyFrameInterpolator& operator=(const KeyFrameInterpolator& kfi);
|
// KeyFrameInterpolator& operator=(const KeyFrameInterpolator& kfi);
|
||||||
|
|
|
||||||
|
|
@ -355,7 +355,7 @@ void KeyFrameInterpolator::updateCurrentKeyFrameForTime(qreal time) {
|
||||||
|
|
||||||
// TODO: Special case for loops when closed path is implemented !!
|
// TODO: Special case for loops when closed path is implemented !!
|
||||||
if (!currentFrameValid_)
|
if (!currentFrameValid_)
|
||||||
// Recompute everything from scrach
|
// Recompute everything from scratch
|
||||||
currentFrame_[1]->toFront();
|
currentFrame_[1]->toFront();
|
||||||
|
|
||||||
while (currentFrame_[1]->peekNext()->time() > time) {
|
while (currentFrame_[1]->peekNext()->time() > time) {
|
||||||
|
|
|
||||||
|
|
@ -174,7 +174,7 @@ public:
|
||||||
|
|
||||||
Default value is (0,1,0), but it is updated by the Camera when this object is
|
Default value is (0,1,0), but it is updated by the Camera when this object is
|
||||||
set as its Camera::frame(). Camera::setOrientation() and
|
set as its Camera::frame(). Camera::setOrientation() and
|
||||||
Camera::setUpVector()) direclty modify this value and should be used instead.
|
Camera::setUpVector()) directly modify this value and should be used instead.
|
||||||
*/
|
*/
|
||||||
Vec sceneUpVector() const { return sceneUpVector_; }
|
Vec sceneUpVector() const { return sceneUpVector_; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -308,7 +308,7 @@ protected:
|
||||||
const Camera *const camera);
|
const Camera *const camera);
|
||||||
|
|
||||||
MouseAction action_;
|
MouseAction action_;
|
||||||
Constraint *previousConstraint_; // When manipulation is without Contraint.
|
Constraint *previousConstraint_; // When manipulation is without Constraint.
|
||||||
|
|
||||||
virtual void startAction(
|
virtual void startAction(
|
||||||
int ma,
|
int ma,
|
||||||
|
|
|
||||||
|
|
@ -269,7 +269,7 @@ protected:
|
||||||
//@}
|
//@}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Copy constructor and opertor= are declared private and undefined
|
// Copy constructor and operator= are declared private and undefined
|
||||||
// Prevents everyone from trying to use them
|
// Prevents everyone from trying to use them
|
||||||
MouseGrabber(const MouseGrabber &);
|
MouseGrabber(const MouseGrabber &);
|
||||||
MouseGrabber &operator=(const MouseGrabber &);
|
MouseGrabber &operator=(const MouseGrabber &);
|
||||||
|
|
|
||||||
|
|
@ -385,7 +385,7 @@ public:
|
||||||
* of the world and the origin of the scene. It is relevant when the whole scene is translated
|
* of the world and the origin of the scene. It is relevant when the whole scene is translated
|
||||||
* of a big number, because there is a useless loss of precision when drawing.
|
* of a big number, because there is a useless loss of precision when drawing.
|
||||||
*
|
*
|
||||||
* The offset must be added to the drawn coordinates, and substracted from the computation
|
* The offset must be added to the drawn coordinates, and subtracted from the computation
|
||||||
* \attention the result of pointUnderPixel is the real item translated by the offset.
|
* \attention the result of pointUnderPixel is the real item translated by the offset.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -3370,7 +3370,7 @@ void CGAL::QGLViewer::copyBufferToTexture(GLint , GLenum ) {
|
||||||
Use glBindTexture() to use this texture. Note that this is already done by
|
Use glBindTexture() to use this texture. Note that this is already done by
|
||||||
copyBufferToTexture().
|
copyBufferToTexture().
|
||||||
|
|
||||||
Returns \c 0 is copyBufferToTexture() was never called or if the texure was
|
Returns \c 0 is copyBufferToTexture() was never called or if the texture was
|
||||||
deleted using glDeleteTextures() since then. */
|
deleted using glDeleteTextures() since then. */
|
||||||
CGAL_INLINE_FUNCTION
|
CGAL_INLINE_FUNCTION
|
||||||
GLuint CGAL::QGLViewer::bufferTextureId() const {
|
GLuint CGAL::QGLViewer::bufferTextureId() const {
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ namespace qglviewer {
|
||||||
You can apply the Quaternion \c q rotation to the OpenGL matrices using:
|
You can apply the Quaternion \c q rotation to the OpenGL matrices using:
|
||||||
\code
|
\code
|
||||||
glMultMatrixd(q.matrix());
|
glMultMatrixd(q.matrix());
|
||||||
// equvalent to glRotate(q.angle()*180.0/M_PI, q.axis().x, q.axis().y,
|
// equivalent to glRotate(q.angle()*180.0/M_PI, q.axis().x, q.axis().y,
|
||||||
q.axis().z); \endcode
|
q.axis().z); \endcode
|
||||||
|
|
||||||
Quaternion is part of the \c qglviewer namespace, specify \c
|
Quaternion is part of the \c qglviewer namespace, specify \c
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ void Vec::projectOnPlane(const Vec &normal) {
|
||||||
|
|
||||||
/*! Returns a Vec orthogonal to the Vec. Its norm() depends on the Vec, but is
|
/*! Returns a Vec orthogonal to the Vec. Its norm() depends on the Vec, but is
|
||||||
zero only for a null Vec. Note that the function that associates an
|
zero only for a null Vec. Note that the function that associates an
|
||||||
orthogonalVec() to a Vec is not continous. */
|
orthogonalVec() to a Vec is not continuous. */
|
||||||
CGAL_INLINE_FUNCTION
|
CGAL_INLINE_FUNCTION
|
||||||
Vec Vec::orthogonalVec() const {
|
Vec Vec::orthogonalVec() const {
|
||||||
// Find smallest component. Keep equal case for null values.
|
// Find smallest component. Keep equal case for null values.
|
||||||
|
|
|
||||||
|
|
@ -427,7 +427,7 @@ public:
|
||||||
insert_tip( inew->opposite(), hnew);
|
insert_tip( inew->opposite(), hnew);
|
||||||
insert_tip( jnew->opposite(), inew);
|
insert_tip( jnew->opposite(), inew);
|
||||||
insert_tip( hnew->opposite(), jnew);
|
insert_tip( hnew->opposite(), jnew);
|
||||||
// Make the new incidences with the old stucture.
|
// Make the new incidences with the old structure.
|
||||||
CGAL_assertion_code( std::size_t termination_count = 0;)
|
CGAL_assertion_code( std::size_t termination_count = 0;)
|
||||||
if ( h->next() != i) {
|
if ( h->next() != i) {
|
||||||
Halfedge_handle g = h->next();
|
Halfedge_handle g = h->next();
|
||||||
|
|
|
||||||
|
|
@ -33,7 +33,7 @@ namespace CGAL {
|
||||||
|
|
||||||
// Instead, we rely now on a static local variable. Static variables are
|
// Instead, we rely now on a static local variable. Static variables are
|
||||||
// first of all zero-initialized (Section 3.6.2), which guarantees that
|
// first of all zero-initialized (Section 3.6.2), which guarantees that
|
||||||
// pointers and such are set to zero even if the construtor does not
|
// pointers and such are set to zero even if the constructor does not
|
||||||
// initialize them (Section 8.5). With static variables, the order of
|
// initialize them (Section 8.5). With static variables, the order of
|
||||||
// initialization could be critical, if the initialization of one
|
// initialization could be critical, if the initialization of one
|
||||||
// requires another one to be initialized already (I have not seen such a
|
// requires another one to be initialized already (I have not seen such a
|
||||||
|
|
@ -48,7 +48,7 @@ namespace CGAL {
|
||||||
// for weird static initialization situations. Usually the std::vector
|
// for weird static initialization situations. Usually the std::vector
|
||||||
// class uses a plain C-pointer as iterator, which would be a POD and
|
// class uses a plain C-pointer as iterator, which would be a POD and
|
||||||
// thus efficient. However, the std::list iterators might not be POD's if
|
// thus efficient. However, the std::list iterators might not be POD's if
|
||||||
// they define their own copy contructor. This is the case for
|
// they define their own copy constructor. This is the case for
|
||||||
// std::list::iterator of the current SGI STL, but not for the
|
// std::list::iterator of the current SGI STL, but not for the
|
||||||
// std::list::const_iterator, which is a funny side-effect of having
|
// std::list::const_iterator, which is a funny side-effect of having
|
||||||
// only a single class for both and a constructor that allows iterator to
|
// only a single class for both and a constructor that allows iterator to
|
||||||
|
|
|
||||||
|
|
@ -547,7 +547,7 @@ public:
|
||||||
-- --rr;
|
-- --rr;
|
||||||
Hiterator rrhv = hvector.end();
|
Hiterator rrhv = hvector.end();
|
||||||
-- --rrhv;
|
-- --rrhv;
|
||||||
// The comments proove the invariant of the partitioning step.
|
// The comments prove the invariant of the partitioning step.
|
||||||
// Note that + 1 or - 1 denotes plus one edge or minus one edge,
|
// Note that + 1 or - 1 denotes plus one edge or minus one edge,
|
||||||
// so they mean actually + 2 and - 2.
|
// so they mean actually + 2 and - 2.
|
||||||
// Pivot is in *ll
|
// Pivot is in *ll
|
||||||
|
|
@ -617,7 +617,7 @@ public:
|
||||||
CGAL_assertion( llhv >= rrhv);
|
CGAL_assertion( llhv >= rrhv);
|
||||||
// rr + 1 >= ll >= rr
|
// rr + 1 >= ll >= rr
|
||||||
// Elements in [rr+1..end) >= pivot
|
// Elements in [rr+1..end) >= pivot
|
||||||
// Elemente in [begin..ll) < pivot
|
// Elements in [begin..ll) < pivot
|
||||||
// Pivot is in a[ll]
|
// Pivot is in a[ll]
|
||||||
if ( ll == rr) {
|
if ( ll == rr) {
|
||||||
// Check for the possibly missed swap.
|
// Check for the possibly missed swap.
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ namespace HomogeneousKernelFunctors {
|
||||||
|
|
||||||
using namespace CommonKernelFunctors;
|
using namespace CommonKernelFunctors;
|
||||||
|
|
||||||
// For lazyness...
|
// For laziness...
|
||||||
using CartesianKernelFunctors::Are_parallel_2;
|
using CartesianKernelFunctors::Are_parallel_2;
|
||||||
using CartesianKernelFunctors::Are_parallel_3;
|
using CartesianKernelFunctors::Are_parallel_3;
|
||||||
using CartesianKernelFunctors::Compute_squared_area_3;
|
using CartesianKernelFunctors::Compute_squared_area_3;
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ public:
|
||||||
|
|
||||||
// TODO MT improve
|
// TODO MT improve
|
||||||
|
|
||||||
// The cirle belongs to the pencil with limit points p and q
|
// The circle belongs to the pencil with limit points p and q
|
||||||
// p, q are zero-circles
|
// p, q are zero-circles
|
||||||
// (x, y, xˆ2 + yˆ2 - rˆ2) = alpha*(xp, yp, xpˆ2 + ypˆ2) + (1-alpha)*(xq, yq, xqˆ2 + yqˆ2)
|
// (x, y, xˆ2 + yˆ2 - rˆ2) = alpha*(xp, yp, xpˆ2 + ypˆ2) + (1-alpha)*(xq, yq, xqˆ2 + yqˆ2)
|
||||||
// xˆ2 + yˆ2 - rˆ2 = 1 (= radius of the Poincare disc)
|
// xˆ2 + yˆ2 - rˆ2 = 1 (= radius of the Poincare disc)
|
||||||
|
|
|
||||||
|
|
@ -76,7 +76,7 @@ typedef unspecified_type Less_y_2;
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
/// \name Creation
|
/// \name Creation
|
||||||
/// Only a default constructor, copy constructor and an assignement
|
/// Only a default constructor, copy constructor and an assignment
|
||||||
/// operator are required. Note that further constructors can be
|
/// operator are required. Note that further constructors can be
|
||||||
/// provided.
|
/// provided.
|
||||||
/// @{
|
/// @{
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ return to the departure airfield. To score simply based on the total
|
||||||
distance flown is not a good measure, since circling in thermals
|
distance flown is not a good measure, since circling in thermals
|
||||||
allows to increase it easily.
|
allows to increase it easily.
|
||||||
|
|
||||||
\section Inscribed_areasLargest Largest Empty Rectange
|
\section Inscribed_areasLargest Largest Empty Rectangle
|
||||||
|
|
||||||
We further provide an algorithm for computing the maximal area
|
We further provide an algorithm for computing the maximal area
|
||||||
inscribed axis parallel rectangle for a point set.
|
inscribed axis parallel rectangle for a point set.
|
||||||
|
|
|
||||||
|
|
@ -265,8 +265,8 @@ public:
|
||||||
std::set<Point_data *,Less_yx> *right_tent;
|
std::set<Point_data *,Less_yx> *right_tent;
|
||||||
std::set<Point_data *,Less_yx> *left_tent;
|
std::set<Point_data *,Less_yx> *left_tent;
|
||||||
|
|
||||||
/* detemine whether the point is a bounding box corner
|
/* determine whether the point is a bounding box corner
|
||||||
(thus not implicitely inserted as a point, or not.
|
(thus not implicitly inserted as a point, or not).
|
||||||
*/
|
*/
|
||||||
|
|
||||||
Point_type type;
|
Point_type type;
|
||||||
|
|
@ -893,7 +893,7 @@ Largest_empty_iso_rectangle_2<T>::phase_1_on_x()
|
||||||
}
|
}
|
||||||
|
|
||||||
// traverse over all possibilities for finding a larger empty rectangle
|
// traverse over all possibilities for finding a larger empty rectangle
|
||||||
// rectangles here touch the top and the buttom of the bounding box
|
// rectangles here touch the top and the bottom of the bounding box
|
||||||
while(iter != last_iter) {
|
while(iter != last_iter) {
|
||||||
// filter false points
|
// filter false points
|
||||||
if((*iter)->type != TOP_RIGHT && (*iter)->type != TOP_LEFT) {
|
if((*iter)->type != TOP_RIGHT && (*iter)->type != TOP_LEFT) {
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
Largest Emtpy Rectangle 2:
|
Largest Empty Rectangle 2:
|
||||||
Tel-Aviv University (Israel).
|
Tel-Aviv University (Israel).
|
||||||
Extremal Polygon 2:
|
Extremal Polygon 2:
|
||||||
ETH Zurich (Switzerland).
|
ETH Zurich (Switzerland).
|
||||||
|
|
|
||||||
|
|
@ -202,7 +202,7 @@ int test(std::ifstream& is_ptr, const std::string& expected)
|
||||||
empty_rectangle1.get_left_bottom_right_top();
|
empty_rectangle1.get_left_bottom_right_top();
|
||||||
output << "test left_bottom_right_top is " << q.first << ", " << q.second << ", " << q.third << ", " << q.fourth << std::endl;
|
output << "test left_bottom_right_top is " << q.first << ", " << q.second << ", " << q.third << ", " << q.fourth << std::endl;
|
||||||
|
|
||||||
// comapre output with expected
|
// compare output with expected
|
||||||
std::string outputstring = output.str();
|
std::string outputstring = output.str();
|
||||||
|
|
||||||
std::cout << outputstring << std::endl;
|
std::cout << outputstring << std::endl;
|
||||||
|
|
|
||||||
|
|
@ -382,7 +382,7 @@ can be used to find out which CGAL data structures can be used given a specific
|
||||||
|
|
||||||
### [Surface Mesh Topology](https://doc.cgal.org/5.3/Manual/packages.html#PkgSurfaceMeshTopologySummary)
|
### [Surface Mesh Topology](https://doc.cgal.org/5.3/Manual/packages.html#PkgSurfaceMeshTopologySummary)
|
||||||
- Added the function [`CGAL::Surface_mesh_topology::Curves_on_surface_topology::is_homotopic_to_simple_cycle()`](https://doc.cgal.org/5.3/Surface_mesh_topology/classCGAL_1_1Surface__mesh__topology_1_1Curves__on__surface__topology.html#a8d7c4cba2cf2cff542f5cd93117233db),
|
- Added the function [`CGAL::Surface_mesh_topology::Curves_on_surface_topology::is_homotopic_to_simple_cycle()`](https://doc.cgal.org/5.3/Surface_mesh_topology/classCGAL_1_1Surface__mesh__topology_1_1Curves__on__surface__topology.html#a8d7c4cba2cf2cff542f5cd93117233db),
|
||||||
which can be used to determine whehter a closed path on a surface mesh can be continously
|
which can be used to determine whether a closed path on a surface mesh can be continuously
|
||||||
transformed to a cycle without self intersection.
|
transformed to a cycle without self intersection.
|
||||||
|
|
||||||
### [Surface Mesh Simplification](https://doc.cgal.org/5.3/Manual/packages.html#PkgSurfaceMeshSimplification)
|
### [Surface Mesh Simplification](https://doc.cgal.org/5.3/Manual/packages.html#PkgSurfaceMeshSimplification)
|
||||||
|
|
@ -749,7 +749,7 @@ Release date: September 2020
|
||||||
the intersection of two constraint segments in a 'T'-like junction is an existing point
|
the intersection of two constraint segments in a 'T'-like junction is an existing point
|
||||||
and as such does not require any new construction). The former tag, `CGAL::No_constraint_intersection_tag`,
|
and as such does not require any new construction). The former tag, `CGAL::No_constraint_intersection_tag`,
|
||||||
does not allow any intersection, except for the configuration of two constraints having a single
|
does not allow any intersection, except for the configuration of two constraints having a single
|
||||||
common endpoints, for convience.
|
common endpoints, for convenience.
|
||||||
- Added the function [`CGAL::split_subconstraint_graph_into_constraints()`](https://doc.cgal.org/5.1/Triangulation_2/classCGAL_1_1Constrained__triangulation__plus__2.html#adea77f5db5cd4dfae302e4502f1caa85)
|
- Added the function [`CGAL::split_subconstraint_graph_into_constraints()`](https://doc.cgal.org/5.1/Triangulation_2/classCGAL_1_1Constrained__triangulation__plus__2.html#adea77f5db5cd4dfae302e4502f1caa85)
|
||||||
to [`Constrained_triangulation_plus_2`](https://doc.cgal.org/5.1/Triangulation_2/classCGAL_1_1Constrained__triangulation__plus__2.html) to initialize the constraints
|
to [`Constrained_triangulation_plus_2`](https://doc.cgal.org/5.1/Triangulation_2/classCGAL_1_1Constrained__triangulation__plus__2.html) to initialize the constraints
|
||||||
from a soup of disconnected segments that should first be split into polylines.
|
from a soup of disconnected segments that should first be split into polylines.
|
||||||
|
|
@ -894,7 +894,7 @@ Release date: November 2019
|
||||||
- **Breaking change**: The [graph traits](https://doc.cgal.org/5.0/BGL/group__PkgBGLTraits.html) enabling CGAL's 2D triangulations to be used as a parameter
|
- **Breaking change**: The [graph traits](https://doc.cgal.org/5.0/BGL/group__PkgBGLTraits.html) enabling CGAL's 2D triangulations to be used as a parameter
|
||||||
for any graph-based algorithm of CGAL (or boost) have been improved to fully model the [`FaceGraph`](https://doc.cgal.org/5.0/BGL/classFaceGraph.html) concept.
|
for any graph-based algorithm of CGAL (or boost) have been improved to fully model the [`FaceGraph`](https://doc.cgal.org/5.0/BGL/classFaceGraph.html) concept.
|
||||||
In addition, only the finite simplicies (those not incident to the infinite vertex) of the 2D triangulations
|
In addition, only the finite simplicies (those not incident to the infinite vertex) of the 2D triangulations
|
||||||
are now visibile through this scope. The complete triangulation can still be accessed as a graph,
|
are now visible through this scope. The complete triangulation can still be accessed as a graph,
|
||||||
by using the graph traits of the underlying triangulation data structure (usually,
|
by using the graph traits of the underlying triangulation data structure (usually,
|
||||||
[`CGAL::Triangulation_data_structure_2`](https://doc.cgal.org/5.0/TDS_2/classCGAL_1_1Triangulation__data__structure__2.html)).
|
[`CGAL::Triangulation_data_structure_2`](https://doc.cgal.org/5.0/TDS_2/classCGAL_1_1Triangulation__data__structure__2.html)).
|
||||||
- **Breaking change**: The `insert()` function
|
- **Breaking change**: The `insert()` function
|
||||||
|
|
@ -2402,7 +2402,7 @@ Release date: October 2015
|
||||||
method, a variant of the method described in "2D Minkowski Sum
|
method, a variant of the method described in "2D Minkowski Sum
|
||||||
of Polygons Using Reduced Convolution" by Behar and Lien. The
|
of Polygons Using Reduced Convolution" by Behar and Lien. The
|
||||||
new method supports polygons with holes and in many cases out
|
new method supports polygons with holes and in many cases out
|
||||||
pergorms the implementation of the exsisting (full) convolution
|
performs the implementation of the existing (full) convolution
|
||||||
method.
|
method.
|
||||||
- Introduced two new classes that decompose polygons into convex
|
- Introduced two new classes that decompose polygons into convex
|
||||||
pieces (models of the `PolygonConvexDecomposition_2` concept)
|
pieces (models of the `PolygonConvexDecomposition_2` concept)
|
||||||
|
|
@ -2422,7 +2422,7 @@ Release date: October 2015
|
||||||
### 2D Conforming Triangulations and Meshes
|
### 2D Conforming Triangulations and Meshes
|
||||||
|
|
||||||
- Add an optimization method `CGAL::lloyd_optimize_mesh_2()` that
|
- Add an optimization method `CGAL::lloyd_optimize_mesh_2()` that
|
||||||
implements the Lloyd (or Centroidal Voronoi Tesselation)
|
implements the Lloyd (or Centroidal Voronoi Tessellation)
|
||||||
optimization algorithm in a Constrained Delaunay Triangulation. For
|
optimization algorithm in a Constrained Delaunay Triangulation. For
|
||||||
optimization, the triangulation data structure on which the mesher
|
optimization, the triangulation data structure on which the mesher
|
||||||
relies needs its `VertexBase` template parameter to be a model of
|
relies needs its `VertexBase` template parameter to be a model of
|
||||||
|
|
@ -3163,7 +3163,7 @@ Release date: March 2013
|
||||||
- Introduction of `CGAL::cpp11::result_of` as an alias to the tr1
|
- Introduction of `CGAL::cpp11::result_of` as an alias to the tr1
|
||||||
implementation from boost of the `result_of` mechanism. When all
|
implementation from boost of the `result_of` mechanism. When all
|
||||||
compilers supported by CGAL will have a Standard compliant
|
compilers supported by CGAL will have a Standard compliant
|
||||||
implemention of the C++11 `decltype` feature, it will become an
|
implementation of the C++11 `decltype` feature, it will become an
|
||||||
alias to `std::result_of`.
|
alias to `std::result_of`.
|
||||||
|
|
||||||
### Surface Reconstruction from Point Sets
|
### Surface Reconstruction from Point Sets
|
||||||
|
|
@ -4216,7 +4216,7 @@ fixes for this release.
|
||||||
compose, compose\_shared, swap\_\*, negate, along with the helper
|
compose, compose\_shared, swap\_\*, negate, along with the helper
|
||||||
functions set\_arity\_\* and Arity class and Arity\_tag typedefs)
|
functions set\_arity\_\* and Arity class and Arity\_tag typedefs)
|
||||||
which were provided by `<CGAL/functional.h>` have been removed.
|
which were provided by `<CGAL/functional.h>` have been removed.
|
||||||
Please use the better boost::bind mecanism instead. The concept
|
Please use the better boost::bind mechanism instead. The concept
|
||||||
AdaptableFunctor has been changed accordingly such that only a
|
AdaptableFunctor has been changed accordingly such that only a
|
||||||
nested result\_type is required.
|
nested result\_type is required.
|
||||||
- The accessory classes Twotuple, Threetuple, Fourtuple and Sixtuple
|
- The accessory classes Twotuple, Threetuple, Fourtuple and Sixtuple
|
||||||
|
|
@ -4340,10 +4340,10 @@ This is a bug fix release.
|
||||||
- Fixed bug in Arrangement\_2 in walk along a line point location for
|
- Fixed bug in Arrangement\_2 in walk along a line point location for
|
||||||
unbounded curves.
|
unbounded curves.
|
||||||
- Fixed bug in aggregated insertion to Arrangement\_2.
|
- Fixed bug in aggregated insertion to Arrangement\_2.
|
||||||
- Fixed bug in Arrangment\_2 class when inserting an unbounded curve
|
- Fixed bug in Arrangement\_2 class when inserting an unbounded curve
|
||||||
from an existing vertex.
|
from an existing vertex.
|
||||||
- Fixed bug when dealing with a degenerate conic arc in
|
- Fixed bug when dealing with a degenerate conic arc in
|
||||||
Arr\_conic\_traits\_2 of the Arrangment package, meaning a line
|
Arr\_conic\_traits\_2 of the Arrangement package, meaning a line
|
||||||
segment which is part of a degenerate parabola/hyperbola.
|
segment which is part of a degenerate parabola/hyperbola.
|
||||||
- Fixed bug in the Bezier traits-class: properly handle line segments.
|
- Fixed bug in the Bezier traits-class: properly handle line segments.
|
||||||
properly handle comparison near a vertical tangency.
|
properly handle comparison near a vertical tangency.
|
||||||
|
|
@ -4680,7 +4680,7 @@ static runtime (/ML).
|
||||||
discrete conformal map, discrete authalic parameterization, Floater
|
discrete conformal map, discrete authalic parameterization, Floater
|
||||||
mean value coordinates or Tutte barycentric mapping.
|
mean value coordinates or Tutte barycentric mapping.
|
||||||
- Principal Component Analysis (new package)
|
- Principal Component Analysis (new package)
|
||||||
This package provides functions to compute global informations on
|
This package provides functions to compute global information on
|
||||||
the shape of a set of 2D or 3D objects such as points. It provides
|
the shape of a set of 2D or 3D objects such as points. It provides
|
||||||
the computation of axis-aligned bounding boxes, centroids of point
|
the computation of axis-aligned bounding boxes, centroids of point
|
||||||
sets, barycenters of weighted point sets, as well as linear least
|
sets, barycenters of weighted point sets, as well as linear least
|
||||||
|
|
@ -5046,7 +5046,7 @@ The following functionality has been added or changed:
|
||||||
implements the data structure for 2D triangulation class, now
|
implements the data structure for 2D triangulation class, now
|
||||||
makes use of CGAL::Compact\_container (see Support Library
|
makes use of CGAL::Compact\_container (see Support Library
|
||||||
section below).
|
section below).
|
||||||
- The triangulation classes use a Rebind mecanism to provide the
|
- The triangulation classes use a Rebind mechanism to provide the
|
||||||
full flexibility on Vertex and Face base classes. This means
|
full flexibility on Vertex and Face base classes. This means
|
||||||
that it is possible for the user to derive its own Face of
|
that it is possible for the user to derive its own Face of
|
||||||
Vertex base class, adding a functionality that makes use of
|
Vertex base class, adding a functionality that makes use of
|
||||||
|
|
@ -5073,7 +5073,7 @@ The following functionality has been added or changed:
|
||||||
- Triangulation\_3 now gives non-const access to the data
|
- Triangulation\_3 now gives non-const access to the data
|
||||||
structure.
|
structure.
|
||||||
- Interval Skip List (new package)
|
- Interval Skip List (new package)
|
||||||
An interval skip list is a data strucure for finding all intervals
|
An interval skip list is a data structure for finding all intervals
|
||||||
that contain a point, and for stabbing queries, that is for
|
that contain a point, and for stabbing queries, that is for
|
||||||
answering the question whether a given point is contained in an
|
answering the question whether a given point is contained in an
|
||||||
interval or not.
|
interval or not.
|
||||||
|
|
@ -5394,11 +5394,11 @@ The following functionality has been added or changed:
|
||||||
is transparent for the user of triangulation classes.
|
is transparent for the user of triangulation classes.
|
||||||
- Constrained and Delaunay constrained triangulations are now able
|
- Constrained and Delaunay constrained triangulations are now able
|
||||||
to handle intersecting input constraints. The behavior of
|
to handle intersecting input constraints. The behavior of
|
||||||
constrained triangulations with repect to intersection of input
|
constrained triangulations with respect to intersection of input
|
||||||
constraints can be customized using an intersection tag.
|
constraints can be customized using an intersection tag.
|
||||||
- A new class Constrained\_triangulation\_plus offers a
|
- A new class Constrained\_triangulation\_plus offers a
|
||||||
constrained hierarchy on top of a constrained triangulations.
|
constrained hierarchy on top of a constrained triangulations.
|
||||||
This additionnal data structure describes the subdivision of the
|
This additional data structure describes the subdivision of the
|
||||||
original constraints into edges of the triangulations.
|
original constraints into edges of the triangulations.
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -5464,7 +5464,7 @@ The following functionality is no longer supported:
|
||||||
Bugs in the following packages have been fixed: 3D Convex hull, 2D
|
Bugs in the following packages have been fixed: 3D Convex hull, 2D
|
||||||
Polygon partition, simple polygon generator
|
Polygon partition, simple polygon generator
|
||||||
|
|
||||||
Also attempts have been made to assure compatability with the upcoming
|
Also attempts have been made to assure compatibility with the upcoming
|
||||||
LEDA release that introduces the leda namespace.
|
LEDA release that introduces the leda namespace.
|
||||||
|
|
||||||
### Known problems
|
### Known problems
|
||||||
|
|
@ -5636,7 +5636,7 @@ kernels themselves can be used as traits classes in many instances.
|
||||||
conform to the new CGAL kernels. CGAL kernel classes can be used
|
conform to the new CGAL kernels. CGAL kernel classes can be used
|
||||||
as traits classes for all 2D triangulations except for regular
|
as traits classes for all 2D triangulations except for regular
|
||||||
triangulations.
|
triangulations.
|
||||||
- Additionnal functionality:
|
- Additional functionality:
|
||||||
- dual method for regular triangulations (to build a power
|
- dual method for regular triangulations (to build a power
|
||||||
diagram)
|
diagram)
|
||||||
- unified names and signatures for various "find\_conflicts()"
|
- unified names and signatures for various "find\_conflicts()"
|
||||||
|
|
@ -5743,7 +5743,7 @@ The following functionality has been added:
|
||||||
spaces as well as planar triangulations.
|
spaces as well as planar triangulations.
|
||||||
- The triangulation hierarchy which allows fast location query is
|
- The triangulation hierarchy which allows fast location query is
|
||||||
now available.
|
now available.
|
||||||
- Inifinite objects can now be included in planar maps.
|
- Infinite objects can now be included in planar maps.
|
||||||
- Removal as well as insertions of vertices for 3D Delaunay
|
- Removal as well as insertions of vertices for 3D Delaunay
|
||||||
triangulations is now possible.
|
triangulations is now possible.
|
||||||
- A generator for \`\`random'' simple polygons is now available.
|
- A generator for \`\`random'' simple polygons is now available.
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#
|
#
|
||||||
# This files contains definitions needed to use CGAL in a program.
|
# This files contains definitions needed to use CGAL in a program.
|
||||||
# DO NOT EDIT THIS. The definitons have been generated by CMake at configuration time.
|
# DO NOT EDIT THIS. The definitions have been generated by CMake at configuration time.
|
||||||
# This file is loaded by cmake via the command "find_package(CGAL)"
|
# This file is loaded by cmake via the command "find_package(CGAL)"
|
||||||
#
|
#
|
||||||
# This file correspond to a possibly out-of-sources CGAL configuration, thus the actual location
|
# This file correspond to a possibly out-of-sources CGAL configuration, thus the actual location
|
||||||
|
|
@ -139,7 +139,7 @@ macro(check_cgal_component COMPONENT)
|
||||||
set( CGAL_Core_FOUND TRUE )
|
set( CGAL_Core_FOUND TRUE )
|
||||||
endif()
|
endif()
|
||||||
else("${CGAL_LIB}" STREQUAL "CGAL_Qt5")
|
else("${CGAL_LIB}" STREQUAL "CGAL_Qt5")
|
||||||
# Librairies that have no dependencies
|
# Libraries that have no dependencies
|
||||||
set( ${CGAL_LIB}_FOUND TRUE )
|
set( ${CGAL_LIB}_FOUND TRUE )
|
||||||
endif("${CGAL_LIB}" STREQUAL "CGAL_Qt5")
|
endif("${CGAL_LIB}" STREQUAL "CGAL_Qt5")
|
||||||
else(TARGET CGAL::${CGAL_LIB})
|
else(TARGET CGAL::${CGAL_LIB})
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#
|
#
|
||||||
# This files contains definitions needed to use CGAL in a program.
|
# This files contains definitions needed to use CGAL in a program.
|
||||||
# DO NOT EDIT THIS. The definitons have been generated by CMake at configuration time.
|
# DO NOT EDIT THIS. The definitions have been generated by CMake at configuration time.
|
||||||
# This file is loaded by cmake via the command "find_package(CGAL)"
|
# This file is loaded by cmake via the command "find_package(CGAL)"
|
||||||
#
|
#
|
||||||
# This file correspond to a CGAL installation with "make install", thus the actual location
|
# This file correspond to a CGAL installation with "make install", thus the actual location
|
||||||
|
|
@ -123,7 +123,7 @@ macro(check_cgal_component COMPONENT)
|
||||||
set( CGAL_Core_FOUND TRUE )
|
set( CGAL_Core_FOUND TRUE )
|
||||||
endif()
|
endif()
|
||||||
else("${CGAL_LIB}" STREQUAL "CGAL_Qt5")
|
else("${CGAL_LIB}" STREQUAL "CGAL_Qt5")
|
||||||
# Librairies that have no dependencies
|
# Libraries that have no dependencies
|
||||||
set( ${CGAL_LIB}_FOUND TRUE )
|
set( ${CGAL_LIB}_FOUND TRUE )
|
||||||
endif("${CGAL_LIB}" STREQUAL "CGAL_Qt5")
|
endif("${CGAL_LIB}" STREQUAL "CGAL_Qt5")
|
||||||
else(TARGET CGAL::${CGAL_LIB})
|
else(TARGET CGAL::${CGAL_LIB})
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@ MACRO(CHECK_CXX_FILE_RUNS FILE VAR TEST)
|
||||||
SET(${VAR} 1 CACHE INTERNAL "Test ${TEST}" FORCE )
|
SET(${VAR} 1 CACHE INTERNAL "Test ${TEST}" FORCE )
|
||||||
MESSAGE(STATUS "Performing Test ${TEST} - Success")
|
MESSAGE(STATUS "Performing Test ${TEST} - Success")
|
||||||
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
|
||||||
"Performing C++ SOURCE FILE Test ${TEST} succeded with the following output:\n"
|
"Performing C++ SOURCE FILE Test ${TEST} succeeded with the following output:\n"
|
||||||
"${OUTPUT}\n"
|
"${OUTPUT}\n"
|
||||||
"Source file was:\n${SOURCE}\n")
|
"Source file was:\n${SOURCE}\n")
|
||||||
else()
|
else()
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
if ( NOT CGAL_GENERATOR_SPECIFIC_SETTINGS_FILE_INCLUDED )
|
if ( NOT CGAL_GENERATOR_SPECIFIC_SETTINGS_FILE_INCLUDED )
|
||||||
set( CGAL_GENERATOR_SPECIFIC_SETTINGS_FILE_INCLUDED 1 )
|
set( CGAL_GENERATOR_SPECIFIC_SETTINGS_FILE_INCLUDED 1 )
|
||||||
|
|
||||||
message( STATUS "Targetting ${CMAKE_GENERATOR}")
|
message( STATUS "Targeting ${CMAKE_GENERATOR}")
|
||||||
|
|
||||||
if ( MSVC )
|
if ( MSVC )
|
||||||
message( STATUS "Target build environment supports auto-linking" )
|
message( STATUS "Target build environment supports auto-linking" )
|
||||||
|
|
|
||||||
|
|
@ -384,8 +384,8 @@ if( NOT CGAL_MACROS_FILE_INCLUDED )
|
||||||
# Composes a tagged list of libraries: a list with interpersed keywords or tags
|
# Composes a tagged list of libraries: a list with interpersed keywords or tags
|
||||||
# indicating that all following libraries, up to the next tag, are to be linked only for the
|
# indicating that all following libraries, up to the next tag, are to be linked only for the
|
||||||
# corresponding build type. The 'general' tag indicates libraries that corresponds to all build types.
|
# corresponding build type. The 'general' tag indicates libraries that corresponds to all build types.
|
||||||
# 'optimized' corresponds to release builds and 'debug' to debug builds. Tags are case sensitve and
|
# 'optimized' corresponds to release builds and 'debug' to debug builds. Tags are case sensitive and
|
||||||
# the inital range of libraries listed before any tag is implicitely 'general'
|
# the initial range of libraries listed before any tag is implicitly 'general'
|
||||||
#
|
#
|
||||||
# This macro takes 3 lists of general, optimized and debug libraries, resp, and populates the list
|
# This macro takes 3 lists of general, optimized and debug libraries, resp, and populates the list
|
||||||
# given in the fourth argument.
|
# given in the fourth argument.
|
||||||
|
|
@ -425,9 +425,9 @@ if( NOT CGAL_MACROS_FILE_INCLUDED )
|
||||||
# where the general, optimized and debug libraries are collected.
|
# where the general, optimized and debug libraries are collected.
|
||||||
#
|
#
|
||||||
# The first parameter must be a string containing a semi-colon separated list of elements.
|
# The first parameter must be a string containing a semi-colon separated list of elements.
|
||||||
# It cannot be ommitted, but it can be an empty string ""
|
# It cannot be omitted, but it can be an empty string ""
|
||||||
#
|
#
|
||||||
# TThe next three arguments must be the names of the variables containing the result, and they
|
# The next three arguments must be the names of the variables containing the result, and they
|
||||||
# will be APPENDED (retaining any previous contents)
|
# will be APPENDED (retaining any previous contents)
|
||||||
#
|
#
|
||||||
# If there is a last parameter whose value is "PERSISTENT" then the result variables are internal in the cache,
|
# If there is a last parameter whose value is "PERSISTENT" then the result variables are internal in the cache,
|
||||||
|
|
@ -487,11 +487,11 @@ if( NOT CGAL_MACROS_FILE_INCLUDED )
|
||||||
#
|
#
|
||||||
# tag_libraries( LIBS_1 SOME_UNDEFINED_VARIABLE_OR_EMPTY_LIST LIBS_R )
|
# tag_libraries( LIBS_1 SOME_UNDEFINED_VARIABLE_OR_EMPTY_LIST LIBS_R )
|
||||||
#
|
#
|
||||||
# LIBS_R -> libA.so;libB.so (implicitely 'general' since there is no tag)
|
# LIBS_R -> libA.so;libB.so (implicitly 'general' since there is no tag)
|
||||||
#
|
#
|
||||||
# tag_libraries( SOME_UNDEFINED_VARIABLE_OR_EMPTY_LIST LIBS_2 LIBS_R )
|
# tag_libraries( SOME_UNDEFINED_VARIABLE_OR_EMPTY_LIST LIBS_2 LIBS_R )
|
||||||
#
|
#
|
||||||
# LIBS_R -> libC.so (implicitely 'general' since there is no tag)
|
# LIBS_R -> libC.so (implicitly 'general' since there is no tag)
|
||||||
#
|
#
|
||||||
macro( tag_libraries libs_general_or_optimized libs_general_or_debug libs )
|
macro( tag_libraries libs_general_or_optimized libs_general_or_debug libs )
|
||||||
|
|
||||||
|
|
@ -513,7 +513,7 @@ if( NOT CGAL_MACROS_FILE_INCLUDED )
|
||||||
# Appends the list of tagged libraries contained in the variable 'libA' to the list
|
# Appends the list of tagged libraries contained in the variable 'libA' to the list
|
||||||
# of tagged libraries contained in the variable 'libR', properly redistributing each tagged subsequence.
|
# of tagged libraries contained in the variable 'libR', properly redistributing each tagged subsequence.
|
||||||
#
|
#
|
||||||
# The first argument is the name of the variable recieving the list. It will be APPENDED
|
# The first argument is the name of the variable receiving the list. It will be APPENDED
|
||||||
# (retaining any previous contents).
|
# (retaining any previous contents).
|
||||||
# The second parameter is a single string value containing the tagged
|
# The second parameter is a single string value containing the tagged
|
||||||
# lists of libraries to append (as a semi-colon separated list). It can be empty, in which case noting is added.
|
# lists of libraries to append (as a semi-colon separated list). It can be empty, in which case noting is added.
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
# CGAL_SetupBoost
|
# CGAL_SetupBoost
|
||||||
# ---------------
|
# ---------------
|
||||||
#
|
#
|
||||||
# The module searchs for the `Boost` headers and library, by calling
|
# The module searches for the `Boost` headers and library, by calling
|
||||||
#
|
#
|
||||||
# .. code-block:: cmake
|
# .. code-block:: cmake
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
# CGAL_SetupCGALDependencies
|
# CGAL_SetupCGALDependencies
|
||||||
# --------------------------
|
# --------------------------
|
||||||
#
|
#
|
||||||
# The module searchs for the dependencies of the CGAL library:
|
# The module searches for the dependencies of the CGAL library:
|
||||||
# - the `GMP/MPFR` couple,
|
# - the `GMP/MPFR` couple,
|
||||||
# - `LEDA` (optional)
|
# - `LEDA` (optional)
|
||||||
# - the `Boost` libraries (mostly the header-only libraries)
|
# - the `Boost` libraries (mostly the header-only libraries)
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
# CGAL_SetupCGAL_CoreDependencies
|
# CGAL_SetupCGAL_CoreDependencies
|
||||||
# -------------------------------
|
# -------------------------------
|
||||||
#
|
#
|
||||||
# The module searchs for the dependencies of the `CGAL_Core` library:
|
# The module searches for the dependencies of the `CGAL_Core` library:
|
||||||
# - the `GMP/MPFR` couple,
|
# - the `GMP/MPFR` couple,
|
||||||
#
|
#
|
||||||
# and defines the variable :variable:`CGAL_Core_FOUND` and the function
|
# and defines the variable :variable:`CGAL_Core_FOUND` and the function
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
# CGAL_SetupCGAL_ImageIODependencies
|
# CGAL_SetupCGAL_ImageIODependencies
|
||||||
# ----------------------------------
|
# ----------------------------------
|
||||||
#
|
#
|
||||||
# The module searchs for the dependencies of the `CGAL_ImageIO` library:
|
# The module searches for the dependencies of the `CGAL_ImageIO` library:
|
||||||
# - the `Zlib` library (optional)
|
# - the `Zlib` library (optional)
|
||||||
#
|
#
|
||||||
# by calling
|
# by calling
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
# CGAL_SetupCGAL_Qt5Dependencies
|
# CGAL_SetupCGAL_Qt5Dependencies
|
||||||
# ------------------------------
|
# ------------------------------
|
||||||
#
|
#
|
||||||
# The module searchs for the dependencies of the `CGAL_Qt5` library:
|
# The module searches for the dependencies of the `CGAL_Qt5` library:
|
||||||
# - the `Qt5` libraries
|
# - the `Qt5` libraries
|
||||||
#
|
#
|
||||||
# by calling
|
# by calling
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ if ( NOT CGAL_SETUP_FLAGS_INCLUDED )
|
||||||
# override the flags used to build the libraries
|
# override the flags used to build the libraries
|
||||||
#
|
#
|
||||||
set( CGAL_DONT_OVERRIDE_CMAKE_FLAGS_DESCRIPTION
|
set( CGAL_DONT_OVERRIDE_CMAKE_FLAGS_DESCRIPTION
|
||||||
"Set this to TRUE if you want to define or modify any of CMAKE_*_FLAGS. When this is FALSE, all the CMAKE_*_FLAGS flags are overriden with the values used when building the CGAL libs. For CGAL_*_flags (used for ADDITIONAL flags) , there is no need to set this to TRUE."
|
"Set this to TRUE if you want to define or modify any of CMAKE_*_FLAGS. When this is FALSE, all the CMAKE_*_FLAGS flags are overridden with the values used when building the CGAL libs. For CGAL_*_flags (used for ADDITIONAL flags) , there is no need to set this to TRUE."
|
||||||
)
|
)
|
||||||
|
|
||||||
option( CGAL_DONT_OVERRIDE_CMAKE_FLAGS
|
option( CGAL_DONT_OVERRIDE_CMAKE_FLAGS
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
# CGAL_SetupGMP
|
# CGAL_SetupGMP
|
||||||
# -------------
|
# -------------
|
||||||
#
|
#
|
||||||
# The module searchs for the `GMP` and `MPFR` headers and libraries,
|
# The module searches for the `GMP` and `MPFR` headers and libraries,
|
||||||
# by calling
|
# by calling
|
||||||
#
|
#
|
||||||
# .. code-block:: cmake
|
# .. code-block:: cmake
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
# CGAL_SetupLEDA
|
# CGAL_SetupLEDA
|
||||||
# --------------
|
# --------------
|
||||||
#
|
#
|
||||||
# The module searchs for the `LEDA` headers and library, by calling
|
# The module searches for the `LEDA` headers and library, by calling
|
||||||
#
|
#
|
||||||
# .. code-block:: cmake
|
# .. code-block:: cmake
|
||||||
#
|
#
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
## CMake file to locate SuiteSparse and its useful composite projects
|
## CMake file to locate SuiteSparse and its useful composite projects
|
||||||
## The first developpement of this file was made fro Windows users who
|
## The first development of this file was done by a Windows users who
|
||||||
## use:
|
## used:
|
||||||
## https://github.com/jlblancoc/suitesparse-metis-for-windows
|
## https://github.com/jlblancoc/suitesparse-metis-for-windows
|
||||||
## Anyway, it chould be work also on linux (tested on fedora 17 when you installed suitesparse from yum)
|
## Anyway, it could work also on linux (tested on fedora 17 when you installed suitesparse from yum)
|
||||||
##
|
##
|
||||||
##
|
##
|
||||||
## Inputs variables this file can process (variable must be given before find_package(SUITESPARES ...) command) :
|
## Inputs variables this file can process (variable must be given before find_package(SUITESPARES ...) command) :
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
## Note: SuiteSparse lib usually requires linking to a blas and lapack library.
|
## Note: SuiteSparse lib usually requires linking to a blas and lapack library.
|
||||||
##
|
##
|
||||||
##
|
##
|
||||||
## Help variables this file handle internaly :
|
## Help variables this file handle internally :
|
||||||
## * SuiteSparse_SEARCH_LIB_POSTFIX Is set in cache (as advanced) to look into the right lib/lib64 dir for libraries (user can change)
|
## * SuiteSparse_SEARCH_LIB_POSTFIX Is set in cache (as advanced) to look into the right lib/lib64 dir for libraries (user can change)
|
||||||
##
|
##
|
||||||
##
|
##
|
||||||
|
|
@ -22,17 +22,17 @@
|
||||||
## If SuiteSparse_USE_LAPACK_BLAS is set to ON :
|
## If SuiteSparse_USE_LAPACK_BLAS is set to ON :
|
||||||
## * SuiteSparse_LAPACK_BLAS_LIBRARIES Which contain the libblas and liblapack libraries
|
## * SuiteSparse_LAPACK_BLAS_LIBRARIES Which contain the libblas and liblapack libraries
|
||||||
## On windows:
|
## On windows:
|
||||||
## * SuiteSparse_LAPACK_BLAS_DLL Which contain all requiered binaries for use libblas and liblapack
|
## * SuiteSparse_LAPACK_BLAS_DLL Which contain all required binaries for use libblas and liblapack
|
||||||
##
|
##
|
||||||
##
|
##
|
||||||
## Detailed variables this file provide :
|
## Detailed variables this file provide :
|
||||||
## * SuiteSparse_<UPPPER_CASE_COMPONENT>_FOUND True if the given component to look for is found (INCLUDE DIR and LIBRARY)
|
## * SuiteSparse_<UPPPER_CASE_COMPONENT>_FOUND True if the given component to look for is found (INCLUDE DIR and LIBRARY)
|
||||||
## * SuiteSparse_<UPPPER_CASE_COMPONENT>_INCLUDE_DIR The path directory where we can found all compenent header files
|
## * SuiteSparse_<UPPPER_CASE_COMPONENT>_INCLUDE_DIR The path directory where we can be found all component header files
|
||||||
## * SuiteSparse_<UPPPER_CASE_COMPONENT>_LIBRARY The file path to the component library
|
## * SuiteSparse_<UPPPER_CASE_COMPONENT>_LIBRARY The file path to the component library
|
||||||
## Note: If a component is not found, a SuiteSparse_<UPPPER_CASE_COMPONENT>_DIR cache variable is set to allow user set the search directory.
|
## Note: If a component is not found, a SuiteSparse_<UPPPER_CASE_COMPONENT>_DIR cache variable is set to allow user set the search directory.
|
||||||
##
|
##
|
||||||
##
|
##
|
||||||
## Possible componnents to find are (maybe some others can be available):
|
## Possible components to find are (maybe some others can be available):
|
||||||
## * AMD
|
## * AMD
|
||||||
## * CAMD
|
## * CAMD
|
||||||
## * COLAMD
|
## * COLAMD
|
||||||
|
|
@ -125,13 +125,13 @@ endif()
|
||||||
## we can use a generic way to find all of these with simple cmake lines of code
|
## we can use a generic way to find all of these with simple cmake lines of code
|
||||||
macro(SuiteSparse_FIND_COMPONENTS )
|
macro(SuiteSparse_FIND_COMPONENTS )
|
||||||
|
|
||||||
## On windows : we absolutly need SuiteSparse_config.h every time for all projects
|
## On windows : we absolutely need SuiteSparse_config.h every time for all projects
|
||||||
if(WIN32)
|
if(WIN32)
|
||||||
list(FIND SuiteSparse_FIND_COMPONENTS "suitesparseconfig" SS_config_index)
|
list(FIND SuiteSparse_FIND_COMPONENTS "suitesparseconfig" SS_config_index)
|
||||||
if(${SS_config_index} MATCHES "-1")
|
if(${SS_config_index} MATCHES "-1")
|
||||||
list(APPEND SuiteSparse_FIND_COMPONENTS suitesparseconfig)
|
list(APPEND SuiteSparse_FIND_COMPONENTS suitesparseconfig)
|
||||||
if(SuiteSparse_VERBOSE)
|
if(SuiteSparse_VERBOSE)
|
||||||
message(STATUS " On windows, we absolutly need SuiteSparse_config.h every time for all projects : add suitesparseconfig component to look for")
|
message(STATUS " On windows, we absolutely need SuiteSparse_config.h every time for all projects : add suitesparseconfig component to look for")
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
@ -292,7 +292,7 @@ macro(SuiteSparse_FIND_COMPONENTS )
|
||||||
endif()
|
endif()
|
||||||
if(NOT ${componentToCheck})
|
if(NOT ${componentToCheck})
|
||||||
set(SuiteSparse_FOUND OFF)
|
set(SuiteSparse_FOUND OFF)
|
||||||
break() ## one component not found is enought to failed
|
break() ## one component not found is enough to failed
|
||||||
endif()
|
endif()
|
||||||
endforeach()
|
endforeach()
|
||||||
endmacro()
|
endmacro()
|
||||||
|
|
|
||||||
|
|
@ -270,7 +270,7 @@ class CMakeXRefRole(XRefRole):
|
||||||
# We cannot insert index nodes using the result_nodes method
|
# We cannot insert index nodes using the result_nodes method
|
||||||
# because CMakeXRefRole is processed before substitution_reference
|
# because CMakeXRefRole is processed before substitution_reference
|
||||||
# nodes are evaluated so target nodes (with 'ids' fields) would be
|
# nodes are evaluated so target nodes (with 'ids' fields) would be
|
||||||
# duplicated in each evaluted substitution replacement. The
|
# duplicated in each evaluated substitution replacement. The
|
||||||
# docutils substitution transform does not allow this. Instead we
|
# docutils substitution transform does not allow this. Instead we
|
||||||
# use our own CMakeXRefTransform below to add index entries after
|
# use our own CMakeXRefTransform below to add index entries after
|
||||||
# substitutions are completed.
|
# substitutions are completed.
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
You can adapt this file completely to your liking, but it should at least
|
You can adapt this file completely to your liking, but it should at least
|
||||||
contain the root `toctree` directive.
|
contain the root `toctree` directive.
|
||||||
|
|
||||||
Welcome to CGAL CMake Modules's documentation!
|
Welcome to CGAL CMake Modules' documentation!
|
||||||
==============================================
|
=============================================
|
||||||
|
|
||||||
Contents:
|
Contents:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,7 @@
|
||||||
|
|
||||||
//| This flag is set, if a compiler cannot distinguish the signature
|
//| This flag is set, if a compiler cannot distinguish the signature
|
||||||
//| of overloaded function templates, which have one template parameter
|
//| of overloaded function templates, which have one template parameter
|
||||||
//| to be passed explicitely when being called.
|
//| to be passed explicitly when being called.
|
||||||
//|
|
//|
|
||||||
//| This bug appears for example on g++ 3.3 and 3.4 (but not on more recent
|
//| This bug appears for example on g++ 3.3 and 3.4 (but not on more recent
|
||||||
//| g++ version). This bug appears also on Sun CC 5.90.
|
//| g++ version). This bug appears also on Sun CC 5.90.
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,8 @@
|
||||||
//
|
//
|
||||||
// Author: Mael Rouxel-Labbé
|
// Author: Mael Rouxel-Labbé
|
||||||
|
|
||||||
// Some tests are explicitely used to check the sanity of deprecated code and should not
|
// Some tests are explicitly used to check the sanity of deprecated code and should not
|
||||||
// give warnings/errors on plateforms that defined CGAL_NO_DEPRECATED_CODE CGAL-wide
|
// give warnings/errors on platforms that defined CGAL_NO_DEPRECATED_CODE CGAL-wide
|
||||||
// (or did not disable deprecation warnings).
|
// (or did not disable deprecation warnings).
|
||||||
|
|
||||||
#if !defined(CGAL_NO_DEPRECATION_WARNINGS)
|
#if !defined(CGAL_NO_DEPRECATION_WARNINGS)
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ CGAL_VERSION: Defined in <CGAL/version.h>
|
||||||
# endif
|
# endif
|
||||||
#elif defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__EDG_VERSION__)
|
#elif defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__EDG_VERSION__)
|
||||||
//
|
//
|
||||||
// C language compatability (no, honestly)
|
// C language compatibility (no, honestly)
|
||||||
//
|
//
|
||||||
# define BOOST_MSVC _MSC_VER
|
# define BOOST_MSVC _MSC_VER
|
||||||
# define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
|
# define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
|
||||||
|
|
|
||||||
|
|
@ -549,7 +549,7 @@ namespace cpp11{
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
// Returns filename prefixed by the directory of CGAL containing data.
|
// Returns filename prefixed by the directory of CGAL containing data.
|
||||||
// This directory is either defined in the environement variable CGAL_DATA_DIR,
|
// This directory is either defined in the environment variable CGAL_DATA_DIR,
|
||||||
// otherwise it is taken from the constant CGAL_DATA_DIR (defined in CMake),
|
// otherwise it is taken from the constant CGAL_DATA_DIR (defined in CMake),
|
||||||
// otherwise it is empty (and thus returns filename unmodified).
|
// otherwise it is empty (and thus returns filename unmodified).
|
||||||
inline std::string data_file_path(const std::string& filename)
|
inline std::string data_file_path(const std::string& filename)
|
||||||
|
|
|
||||||
|
|
@ -110,7 +110,7 @@ background presented to get into the subject without problems.
|
||||||
Thus, I like the overall structure, and most of my remarks are
|
Thus, I like the overall structure, and most of my remarks are
|
||||||
minor comments, typos and suggestions.
|
minor comments, typos and suggestions.
|
||||||
|
|
||||||
- p. 1, maybe add that a sample point is a natural neigbor iff its
|
- p. 1, maybe add that a sample point is a natural neighbor iff its
|
||||||
lambda is nonzero.
|
lambda is nonzero.
|
||||||
- p. 2, end of paragraph "The interpolation package": I cannot find
|
- p. 2, end of paragraph "The interpolation package": I cannot find
|
||||||
natural_neighbo_coordinates_3 in the manual/reference
|
natural_neighbo_coordinates_3 in the manual/reference
|
||||||
|
|
|
||||||
|
|
@ -73,7 +73,7 @@ plane_centered_circumcenterC3(const RT &ax, const RT &ay, const RT &az,
|
||||||
//
|
//
|
||||||
//precondition: p,q,r aren't collinear.
|
//precondition: p,q,r aren't collinear.
|
||||||
//method:
|
//method:
|
||||||
// - tranlation of p to the origin.
|
// - translation of p to the origin.
|
||||||
plane_centered_circumcenter_translateC3<RT>(ax-px, ay-py, az-pz,
|
plane_centered_circumcenter_translateC3<RT>(ax-px, ay-py, az-pz,
|
||||||
nx, ny, nz,
|
nx, ny, nz,
|
||||||
qx-px, qy-py,qz-pz,
|
qx-px, qy-py,qz-pz,
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ construct_circumcenter(const typename DT::Facet& f,
|
||||||
const typename DT::Geom_traits::Point_3& Q,
|
const typename DT::Geom_traits::Point_3& Q,
|
||||||
const typename DT::Geom_traits& gt = typename DT::Geom_traits());
|
const typename DT::Geom_traits& gt = typename DT::Geom_traits());
|
||||||
|
|
||||||
// ====================== Natural Neighbors Querries ==========================
|
// ====================== Natural Neighbors Queries ==========================
|
||||||
// === Definitions
|
// === Definitions
|
||||||
|
|
||||||
// Given a 3D point Q and a 3D Delaunay triangulation dt,
|
// Given a 3D point Q and a 3D Delaunay triangulation dt,
|
||||||
|
|
@ -358,7 +358,7 @@ construct_circumcenter(const typename DT::Facet& f,
|
||||||
f.first->vertex((f.second+2)&3)->point(),
|
f.first->vertex((f.second+2)&3)->point(),
|
||||||
f.first->vertex((f.second+3)&3)->point(),
|
f.first->vertex((f.second+3)&3)->point(),
|
||||||
Q));
|
Q));
|
||||||
// else the facet is not on the enveloppe of the conflict cavity associated to P
|
// else the facet is not on the envelope of the conflict cavity associated to P
|
||||||
return gt.construct_circumcenter_3_object()(
|
return gt.construct_circumcenter_3_object()(
|
||||||
f.first->vertex((f.second+1)&3)->point(),
|
f.first->vertex((f.second+1)&3)->point(),
|
||||||
f.first->vertex((f.second+2)&3)->point(),
|
f.first->vertex((f.second+2)&3)->point(),
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ side_of_plane_centered_sphereC3(const RT &ax, const RT &ay, const RT &az,
|
||||||
// return: sign( (c-p)(c-p) - (c-t)(c-t))
|
// return: sign( (c-p)(c-p) - (c-t)(c-t))
|
||||||
//
|
//
|
||||||
//method:
|
//method:
|
||||||
// - tranlation of p to the origin.
|
// - translation of p to the origin.
|
||||||
// - separate computation of det and norm of the expression
|
// - separate computation of det and norm of the expression
|
||||||
|
|
||||||
return side_of_plane_centered_sphere_translateC3<RT>(ax-px, ay-py, az-pz,
|
return side_of_plane_centered_sphere_translateC3<RT>(ax-px, ay-py, az-pz,
|
||||||
|
|
@ -136,7 +136,7 @@ side_of_plane_centered_sphereC3(const RT &ax, const RT &ay, const RT &az,
|
||||||
// return: sign( (c-p)(c-p) - (c-r)(c-r))
|
// return: sign( (c-p)(c-p) - (c-r)(c-r))
|
||||||
//
|
//
|
||||||
//method:
|
//method:
|
||||||
// - tranlation of p to the origin.
|
// - translation of p to the origin.
|
||||||
// - separate computation of det and nom of the expression
|
// - separate computation of det and nom of the expression
|
||||||
|
|
||||||
return side_of_plane_centered_sphere_translateC3<RT>(ax-px, ay-py, az-pz,
|
return side_of_plane_centered_sphere_translateC3<RT>(ax-px, ay-py, az-pz,
|
||||||
|
|
|
||||||
|
|
@ -772,9 +772,9 @@ struct Test
|
||||||
check_no_intersection (Rec(p(-2, -6), p( 6, 3)), p(-2, -7));
|
check_no_intersection (Rec(p(-2, -6), p( 6, 3)), p(-2, -7));
|
||||||
|
|
||||||
// point intersection
|
// point intersection
|
||||||
check_intersection (Rec(p(-1, 4), p(-1, 4)), p(-1, 4), p(-1, 4)); // degenerate rectange (0d)
|
check_intersection (Rec(p(-1, 4), p(-1, 4)), p(-1, 4), p(-1, 4)); // degenerate rectangle (0d)
|
||||||
check_intersection (Rec(p(-2, 4), p(-2, 7)), p(-2, 6), p(-2, 6)); // degenerate rectange (1d)
|
check_intersection (Rec(p(-2, 4), p(-2, 7)), p(-2, 6), p(-2, 6)); // degenerate rectangle (1d)
|
||||||
check_intersection (Rec(p(-2, 4), p(-2, 7)), p(-2, 7), p(-2, 7)); // degenerate rectange (1d)
|
check_intersection (Rec(p(-2, 4), p(-2, 7)), p(-2, 7), p(-2, 7)); // degenerate rectangle (1d)
|
||||||
check_intersection (Rec(p(-3, 0), p( 4, 2)), p(-3, 2), p(-3, 2)); // on vertex
|
check_intersection (Rec(p(-3, 0), p( 4, 2)), p(-3, 2), p(-3, 2)); // on vertex
|
||||||
check_intersection (Rec(p( 7, 8), p( 9, 9)), p( 8, 9), p( 8, 9)); // on edge
|
check_intersection (Rec(p( 7, 8), p( 9, 9)), p( 8, 9), p( 8, 9)); // on edge
|
||||||
check_intersection (Rec(p(-2, 0), p( 6, 7)), p( 1, 1), p( 1, 1)); // within
|
check_intersection (Rec(p(-2, 0), p( 6, 7)), p( 1, 1), p( 1, 1)); // within
|
||||||
|
|
|
||||||
|
|
@ -64,7 +64,7 @@ struct r3t3_do_intersect_endpoint_position_visitor
|
||||||
void end_point_in_triangle(){ m_intersection_type = 4; }
|
void end_point_in_triangle(){ m_intersection_type = 4; }
|
||||||
};
|
};
|
||||||
|
|
||||||
//the template parameter Visitor here is used to offer the posibility to use
|
//the template parameter Visitor here is used to offer the possibility to use
|
||||||
//r3t3_do_intersect_endpoint_position_visitor to track whether the endpoint of
|
//r3t3_do_intersect_endpoint_position_visitor to track whether the endpoint of
|
||||||
//the ray lies inside the plane of the triangle or not. It is used for example
|
//the ray lies inside the plane of the triangle or not. It is used for example
|
||||||
//in the function that checks whether a point is inside a polyhedron; if the ray
|
//in the function that checks whether a point is inside a polyhedron; if the ray
|
||||||
|
|
|
||||||
|
|
@ -90,13 +90,13 @@ t3r3_intersection_coplanar_aux(const typename K::Point_3& a,
|
||||||
|
|
||||||
const Point_3& p = point_on(r,0);
|
const Point_3& p = point_on(r,0);
|
||||||
|
|
||||||
// A ray is not symetric, 2 cases depending on isolated side of c
|
// A ray is not symmetric, 2 cases depending on isolated side of c
|
||||||
Orientation cap = negative_side ? coplanar_orientation(c,a,p)
|
Orientation cap = negative_side ? coplanar_orientation(c,a,p)
|
||||||
: coplanar_orientation(b,c,p);
|
: coplanar_orientation(b,c,p);
|
||||||
|
|
||||||
switch ( cap ) {
|
switch ( cap ) {
|
||||||
case NEGATIVE:
|
case NEGATIVE:
|
||||||
// p is bellow [c,a]
|
// p is below [c,a]
|
||||||
return intersection_return<typename K::Intersect_3, typename K::Triangle_3, typename K::Ray_3>();
|
return intersection_return<typename K::Intersect_3, typename K::Triangle_3, typename K::Ray_3>();
|
||||||
|
|
||||||
case COLLINEAR:
|
case COLLINEAR:
|
||||||
|
|
@ -111,7 +111,7 @@ t3r3_intersection_coplanar_aux(const typename K::Point_3& a,
|
||||||
Point_3 p_side_end_point(p);
|
Point_3 p_side_end_point(p);
|
||||||
Point_3 q_side_end_point;
|
Point_3 q_side_end_point;
|
||||||
|
|
||||||
// A ray is not symetric, 2 cases depending on isolated side of c
|
// A ray is not symmetric, 2 cases depending on isolated side of c
|
||||||
if ( negative_side )
|
if ( negative_side )
|
||||||
{
|
{
|
||||||
if ( NEGATIVE == coplanar_orientation(b,c,p) )
|
if ( NEGATIVE == coplanar_orientation(b,c,p) )
|
||||||
|
|
|
||||||
|
|
@ -440,7 +440,7 @@ int main(int, char**)
|
||||||
std::cout << " |||||||| Test Simple_cartesian<double> ||||||||" << std::endl;
|
std::cout << " |||||||| Test Simple_cartesian<double> ||||||||" << std::endl;
|
||||||
Plane_3_intersection_tester< CGAL::Simple_cartesian<double> >(r).run();
|
Plane_3_intersection_tester< CGAL::Simple_cartesian<double> >(r).run();
|
||||||
|
|
||||||
// Homogenous is broken for projection and Pln-Sphere
|
// Homogeneous is broken for projection and Pln-Sphere
|
||||||
// std::cout << " |||||||| Test CGAL::Homogeneous<CGAL::MP_Float> ||||||||" << std::endl;
|
// std::cout << " |||||||| Test CGAL::Homogeneous<CGAL::MP_Float> ||||||||" << std::endl;
|
||||||
// Plane_3_intersection_tester< CGAL::Homogeneous<CGAL::MP_Float> >(r).run();
|
// Plane_3_intersection_tester< CGAL::Homogeneous<CGAL::MP_Float> >(r).run();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ Equality test.
|
||||||
bool operator==(const Interval& I) const;
|
bool operator==(const Interval& I) const;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
Unequality test.
|
Inequality test.
|
||||||
*/
|
*/
|
||||||
bool operator!=(const Interval& I) const;
|
bool operator!=(const Interval& I) const;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -187,7 +187,7 @@ proper_subset(Interval interval1, Interval interval2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Set operations, functions returing Interval
|
// Set operations, functions returning Interval
|
||||||
//the enable_if is need for MSVC as it is not able to eliminate
|
//the enable_if is need for MSVC as it is not able to eliminate
|
||||||
//the function if Interval_traits<Interval>::Intersection has no result_type
|
//the function if Interval_traits<Interval>::Intersection has no result_type
|
||||||
//(like Null_functor)
|
//(like Null_functor)
|
||||||
|
|
|
||||||
|
|
@ -39,7 +39,7 @@ void test_with_empty_interval(CGAL::Tag_false) {
|
||||||
CGAL_static_assertion(
|
CGAL_static_assertion(
|
||||||
(::std::is_same< Empty, CGAL::Null_functor>::value));
|
(::std::is_same< Empty, CGAL::Null_functor>::value));
|
||||||
|
|
||||||
// this part chages in case we allow empty intersection
|
// this part changes in case we allow empty intersection
|
||||||
// which seems to be not possible for CORE::BigFloat as Interval
|
// which seems to be not possible for CORE::BigFloat as Interval
|
||||||
try{
|
try{
|
||||||
try{
|
try{
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,7 @@ respective curvature line, while \f$ b_1,b_2\f$ are the directional
|
||||||
derivatives of \f$ k_1,k_2\f$ along the other curvature lines.
|
derivatives of \f$ k_1,k_2\f$ along the other curvature lines.
|
||||||
|
|
||||||
The Monge coordinate system can be computed from any \f$ d\f$-jet (\f$ d\geq
|
The Monge coordinate system can be computed from any \f$ d\f$-jet (\f$ d\geq
|
||||||
2\f$), and so are the Monge coefficients. These informations
|
2\f$), and so are the Monge coefficients. These information
|
||||||
characterize the local geometry of the surface in a canonical way, and
|
characterize the local geometry of the surface in a canonical way, and
|
||||||
are the quantities returned by our algorithm.
|
are the quantities returned by our algorithm.
|
||||||
|
|
||||||
|
|
@ -277,7 +277,7 @@ vertices of a given mesh. The neighborhood of a given vertex is
|
||||||
computed using rings on the triangulation. Results are twofold:
|
computed using rings on the triangulation. Results are twofold:
|
||||||
<UL>
|
<UL>
|
||||||
<LI>a human readable text file featuring the `::CGAL::Monge_via_jet_fitting::Monge_form` and
|
<LI>a human readable text file featuring the `::CGAL::Monge_via_jet_fitting::Monge_form` and
|
||||||
numerical informations on the computation: condition number and the
|
numerical information on the computation: condition number and the
|
||||||
PCA basis;
|
PCA basis;
|
||||||
<LI>another text file that records raw data (better for a visualization
|
<LI>another text file that records raw data (better for a visualization
|
||||||
post-processing).
|
post-processing).
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ struct Facet_unit_normal {
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------
|
//----------------------------------------------------------------
|
||||||
// operations on hedges, facets etc, handled using proeprty maps
|
// operations on hedges, facets etc, handled using property maps
|
||||||
//----------------------------------------------------------------
|
//----------------------------------------------------------------
|
||||||
|
|
||||||
template <class TPoly , class HEdgePropertyMap> class T_PolyhedralSurf_hedge_ops
|
template <class TPoly , class HEdgePropertyMap> class T_PolyhedralSurf_hedge_ops
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ takes an filename.off file as input,
|
||||||
it computes a fitting for each vertex
|
it computes a fitting for each vertex
|
||||||
|
|
||||||
it outputs the results in :
|
it outputs the results in :
|
||||||
1. filename.off.4ogl.txt which records raw data (better for a vizualization
|
1. filename.off.4ogl.txt which records raw data (better for a visualization
|
||||||
post-processing)
|
post-processing)
|
||||||
2. if option -vtrue, filename.off.verb.txt contains human readable results
|
2. if option -vtrue, filename.off.verb.txt contains human readable results
|
||||||
|
|
||||||
|
|
@ -43,7 +43,7 @@ Allowed options:
|
||||||
|
|
||||||
|
|
||||||
Note : if the nb of collected points is less than the required min number of
|
Note : if the nb of collected points is less than the required min number of
|
||||||
points to make the approxiamtion possible (which is constrained by the deg)
|
points to make the approximation possible (which is constrained by the deg)
|
||||||
then the vertex is skipped.
|
then the vertex is skipped.
|
||||||
|
|
||||||
./Mesh_estimation
|
./Mesh_estimation
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ int main(int argc, char *argv[])
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
//initalize the in_points container
|
//initialize the in_points container
|
||||||
double x, y, z;
|
double x, y, z;
|
||||||
std::vector<DPoint> in_points;
|
std::vector<DPoint> in_points;
|
||||||
while (inFile >> x) {
|
while (inFile >> x) {
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,7 @@ public:
|
||||||
//translate_p0 changes the origin of the world to p0 the first point
|
//translate_p0 changes the origin of the world to p0 the first point
|
||||||
// of the input data points
|
// of the input data points
|
||||||
//change_world2fitting (coord of a vector in world) = coord of this
|
//change_world2fitting (coord of a vector in world) = coord of this
|
||||||
// vector in fitting. The matrix tranform has as lines the coord of
|
// vector in fitting. The matrix transform has as lines the coord of
|
||||||
// the basis vectors of fitting in the world coord.
|
// the basis vectors of fitting in the world coord.
|
||||||
//idem for change_fitting2monge
|
//idem for change_fitting2monge
|
||||||
Aff_transformation translate_p0, change_world2fitting,
|
Aff_transformation translate_p0, change_world2fitting,
|
||||||
|
|
@ -553,7 +553,7 @@ compute_Monge_coefficients(FT* A, std::size_t dprime,
|
||||||
{
|
{
|
||||||
//One has the equation w=J_A(u,v) of the fitted surface S
|
//One has the equation w=J_A(u,v) of the fitted surface S
|
||||||
// in the fitting_basis
|
// in the fitting_basis
|
||||||
//Substituing (u,v,w)=change_fitting2monge^{-1}(x,y,z)
|
//Substituting (u,v,w)=change_fitting2monge^{-1}(x,y,z)
|
||||||
//One has the equation f(x,y,z)=0 on this surface S in the monge
|
//One has the equation f(x,y,z)=0 on this surface S in the monge
|
||||||
// basis
|
// basis
|
||||||
//The monge form of the surface at the origin is the bivariate fct
|
//The monge form of the surface at the origin is the bivariate fct
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,7 @@ int main()
|
||||||
std::cerr << "cannot open file for input\n";
|
std::cerr << "cannot open file for input\n";
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
//initalize the in_points container
|
//initialize the in_points container
|
||||||
double x, y, z;
|
double x, y, z;
|
||||||
std::vector<DPoint> in_points;
|
std::vector<DPoint> in_points;
|
||||||
while (inFile >> x) {
|
while (inFile >> x) {
|
||||||
|
|
|
||||||
|
|
@ -46,7 +46,7 @@ the following function overloads are also available.
|
||||||
The iterator versions of those functions can be used in conjunction
|
The iterator versions of those functions can be used in conjunction
|
||||||
with `Dispatch_output_iterator`.
|
with `Dispatch_output_iterator`.
|
||||||
|
|
||||||
Since both the number of intersections, if any, and types of the interesection results
|
Since both the number of intersections, if any, and types of the intersection results
|
||||||
depend on the arguments, the function expects an output iterator on `K::Intersect_2(Type1, Type2)`
|
depend on the arguments, the function expects an output iterator on `K::Intersect_2(Type1, Type2)`
|
||||||
as presented below.
|
as presented below.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ the following function overloads are also available.
|
||||||
The iterator versions of those functions can be used in conjunction
|
The iterator versions of those functions can be used in conjunction
|
||||||
with `Dispatch_output_iterator`.
|
with `Dispatch_output_iterator`.
|
||||||
|
|
||||||
Since both the number of intersections, if any, and types of the interesection results
|
Since both the number of intersections, if any, and types of the intersection results
|
||||||
depend on the arguments, the function expects an output iterator on `Kernel::Intersect_3(Type1, Type2)`
|
depend on the arguments, the function expects an output iterator on `Kernel::Intersect_3(Type1, Type2)`
|
||||||
as presented below.
|
as presented below.
|
||||||
*/
|
*/
|
||||||
|
|
@ -83,7 +83,7 @@ type can be
|
||||||
where the unsigned integer is the multiplicity of the corresponding
|
where the unsigned integer is the multiplicity of the corresponding
|
||||||
intersection point between `obj1` and `obj2`,
|
intersection point between `obj1` and `obj2`,
|
||||||
- `SphericalType1`, when `SphericalType1` and `SphericalType2` are equal,
|
- `SphericalType1`, when `SphericalType1` and `SphericalType2` are equal,
|
||||||
and if the two objets `obj1` and `obj2` are equal,
|
and if the two objects `obj1` and `obj2` are equal,
|
||||||
- `Line_3<SphericalKernel>` or
|
- `Line_3<SphericalKernel>` or
|
||||||
`Circle_3<SphericalKernel>` when `SphericalType1` and `SphericalType2`
|
`Circle_3<SphericalKernel>` when `SphericalType1` and `SphericalType2`
|
||||||
are two-dimensional objects intersecting along a curve (2 planes, or 2
|
are two-dimensional objects intersecting along a curve (2 planes, or 2
|
||||||
|
|
@ -119,7 +119,7 @@ and depending of these types, the computed return value
|
||||||
intersection point,
|
intersection point,
|
||||||
- `Circle_3<SphericalKernel>` or
|
- `Circle_3<SphericalKernel>` or
|
||||||
- `Type1`, when `Type1`, `Type2` and
|
- `Type1`, when `Type1`, `Type2` and
|
||||||
`Type3` are equal, and if the three objets `obj1` and `obj2`
|
`Type3` are equal, and if the three objects `obj1` and `obj2`
|
||||||
and `obj3` are equal.
|
and `obj3` are equal.
|
||||||
*/
|
*/
|
||||||
template < typename Type1, typename Type2, typename Type3, typename OutputIterator >
|
template < typename Type1, typename Type2, typename Type3, typename OutputIterator >
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue