I am using the Envelope_3
package of CGAL-4.9.1 and I need to compute an upper envelope where the resulting envelope diagram (Envelope_diagram_2<EnvTraits>
) could have edges of three different types:
The three provided models of Envelope_Traits_3
are not enough for this.
I therefore need to create my own EnvTraits
(which have to be a model of the concept Envelope_Traits_3
).
For now, I made a something like the already provided Env_sphere_traits_3<ConicTraits>
model, with which I have at my disposal both parabolic arcs and segments (I just use straight arcs).
The problem arises because I also need to be able to use Rays
. How could I do this? Is there a Traits class that I can extend (just like I'm doing right now with Arr_conic_traits_2
) that provides X_monotone_curve_2
s that can be of the three types that I need?
I found the Arr_polycurve_traits_2
class, hoping that it would allow curves of different type to be stored as subcurves, but it actually just allows to store polycurves that are all of the same kind (linear, bezier, conic, circular...).
What you need is a model of the EnvelopeTraits_3
concept and of the ArrangementOpenBoundaryTraits_2
concept. Among all traits classes provided by the "2D Arrangements" package only instances of the templates Arr_linear_traits_2
, Arr_rational_function_traits_2
, and Arr_algebraic_segment_traits_2
are models of the later concept.
I suggest that you develop something like Env_your_object_traits_3<AlgebraicTraits_2>
, where the template parameter AlgebraicTraits_2
can be substituted with an instance of Arr_algebraic_segment_traits_2
.
Efi