Skip to Content.
Sympa Menu

cgal-discuss - Re: [cgal-discuss] Iteration over Voronoi faces

Subject: CGAL users discussion list

List archive

Re: [cgal-discuss] Iteration over Voronoi faces


Chronological Thread 
  • From: Mael <>
  • To:
  • Subject: Re: [cgal-discuss] Iteration over Voronoi faces
  • Date: Tue, 18 Jun 2019 08:04:02 +0200
  • Authentication-results: mail3-smtp-sop.national.inria.fr; spf=None ; spf=None ; spf=None
  • Ironport-phdr: 9a23:ybblhREYggijF3LCGjD8Cp1GYnF86YWxBRYc798ds5kLTJ7zosuwAkXT6L1XgUPTWs2DsrQY0rOQ6v6wEjVYuN6oizMrSNR0TRgLiMEbzUQLIfWuLgnFFsPsdDEwB89YVVVorDmROElRH9viNRWJ+iXhpTEdFQ/iOgVrO+/7BpDdj9it1+C15pbffxhEiCCybL9vMRm6txjdu8gVjIdtN6o91gbFqWZUdupLwm9lOUidlAvm6Meq+55j/SVQu/Y/+MNFTK73Yac2Q6FGATo/K2w669HluhfFTQuU+3sTSX4WnQZSAwjE9x71QJH8uTbnu+Vn2SmaOcr2Ta0oWTmn8qxmRgPkhDsBOjUk9mzcl85+g79BoB+5uhJx3YDUboGWOvRwcKzSctEVSnZOUMtKSyxMAZmxY5cTA+cPP+tVqZT2qVsUrRu5AAmhHOThxSVWiX/ywKY31OEhHhvY0wwkBd4OqnPUrMj6NagMVeC51q3Iwi/YYPxNxzjw84fIfQ4mofGJQ71wbdDRyEkhFwzfklqQtYvlPymV1+gXr2eb6O9gWPuphmU6pQ9xpT2vyd0tionPno8a1l/E+j99wIovIt24UkF7bcagEJtXrSGaNpF5TtksQ2Fyvisx174IuYajcSUO1Zgr3QPTZ+Kaf4SS4x/vSvydLSpliH59Zr6znQu+/Ei6xuD8VsS4yktGoypKn9TKq3sDzQbc6tKdRft45kqh2SiA1wTU6uxcPEw5lbDXK5smwrM/jJYTtF7MHi7ymEnvi6+Wa1kk9vKv6+T5YrXqvJmcOJFoig3mM6QunNKwAfggPwUKQmSX4/mw2KP+8UHjQbhGkOc6nrTEvJzCIMQUvK+5Awtb0oY57Ba/Ci+r0NECknYZKFJJYgiHj4/0O1DBPv/4Ce2zg1C2nzhw3P/JIKbsAprTIXjElbfuY6p961RcyQo9199Q+45UCrYbIPPzQEP+qNvYDhohPwyu3+nnEMl91p8ZWW+XHqCZP7ndsVuR6u0yIumMf5MauCvmK/g+/PPuln84mVoFfaazx5cXaXa4Hu5nI0qDe3bsjM0BQi82uV81Q+XuzVGDSjVOfG2aXqQm5zh9Bpj1I53EQ9WIibGFlHO+F5BSIHpBF0CBFTHsfo+OVt8DZSWXL9N7gzINXqSmUZ5n3har4lypg4F7J/bZr3VL/ano08J4srWKyEMCsAdsBsHY6FmjCmF5mmRSGm1vgeZ6phA7z16C1e1/nuAeEsJTofVETlVibMKO/6lBE9n3Hzn5UJKRUl/8G4epDDY0Q84r0tEHaFp6AcTkhRfGjXLzUu0l0oeTDZlxyZrymn34JsJz0XHDjvBzgFQhR8ZTL3yoj6Vj8BLCQYXOlhfBmg==

Hello,

Just a side-note, the forced orientation is also because it makes it easier when you want to draw the diagram: as Monique said, we have a cgal-wide convention on the orientation of these circle arcs and thus if you have oriented your Voronoi edges in the correct way, you can just draw it immediately without having to check the orientation (and if the orientation hadn't been enforced, you would sometimes use the complementary circle arc).

Best,
Mael

On 17/06/2019 16:54, Stefan Witzel wrote:
Hi,

I realize that the documentation does not guarantee any kind of behavior but I would like say that it would be very useful if the result of Construct_hyperbolic_segment_2 *was* guaranteed to be oriented (which actually amounts to a simplification of code, see below). I have code that needs this property and without it I would essentially start reimplementing them just to lift that restriction.

I would also like to point out that, unlike for circular arcs, the property of running clockwise or counterclockwise is not an intrinsic property of a hyperbolic segment. So one could apply a Moebius transformation and the orientation would change.

Generally I agree that the term "segment" doesn't suggest any kind of orientation, so one might want to call it differently. However, I found that throwing away the order of the endpoints (even of circular arcs) is a loss of information that is hard to recover, whereas the property of running clockwise or counterclockwise can be checked in a single line (which might be a method).

I don't mean to question your design decisions just humbly report on my user experience. I'll just work with my patched header for now.

Best,
Stefan

--- a/Hyperbolic_triangulation_2/include/CGAL/internal/Hyperbolic_Delaunay_triangulation_traits_2_functions.h
+++ b/Hyperbolic_triangulation_2/include/CGAL/internal/Hyperbolic_Delaunay_triangulation_traits_2_functions.h
@@ -132,10 +132,7 @@ public:
     // uncomment!!!
     //assert(circle.has_on_boundary(p) && circle.has_on_boundary(q));

-    if(_gt.orientation_2_object()(p, q, center) == LEFT_TURN)
-      return Circular_arc_2(circle, p, q);
-
-    return Circular_arc_2(circle, q, p);
+    return Circular_arc_2(circle, p, q);
   }


On 17.06.19 15:32, Monique Teillaud wrote:
Hi,

I don't remember details but I guess that we have followed the same conventions as the CGAL circular kernel, see
https://doc.cgal.org/latest/Manual/packages.html#PkgCircularKernel2
The orientation is chosen to be globally consistent.

I have checked the documentation quickly. As far as I can see, neither the traits concept
(https://doc.cgal.org/latest/Hyperbolic_triangulation_2/classHyperbolicDelaunayTriangulationTraits__2.html)
nor the two models (note that one of them is based on the abovementioned circular kernel) is explicitly saying anything on the orientation of circular arcs. There is no guarantee that undocumented properties stay the same forever, so, it might be risky to rely on them.

Best,
--
Monique Teillaud
https://members.loria.fr/Monique.Teillaud/
INRIA Nancy - Grand Est, LORIA
Institut National de Recherche en Informatique et Automatique

----- Le 14 Juin 19, à 9:10, Stefan Witzel

a écrit :

Hi again,

If I understand correctly in lines 135-136 of

Hyperbolic_triangulation_2/include/CGAL/internal/Hyperbolic_Delaunay_triangulation_traits_2_functions.h

the orientation of hyperbolic segments is chosen so that circular arcs
are always (counter-?)clockwise, discarding potential combinatorial
information. That is, a hyperbolic segment from p to q may end up
going from q to p. Is this correct and is there a good reason for it?

Best,
Stefan






Archive powered by MHonArc 2.6.18.

Top of Page