CGAL 6.0  3D Envelopes

This concept defines the minimal set of geometric predicates and operations needed to compute the envelope of a set of arbitrary surfaces in \(
\mathbb{R}^3\). It refines the ArrangementXMonotoneTraits_2
concept. In addition to the Point_2
and X_monotone_curve_2
types and the Has_boundary_category
category tag listed in the base concept, it also lists the Surface_3
and Xy_monotone_surface_3
types, which represent arbitrary surfaces and \( xy\)monotone surfaces, respectively, and some constructions and predicates on these types. Note however, that these operations usually involve the projection of 3D objects onto the \(
xy\)plane.
ArrangementXMonotoneTraits_2
CGAL::Env_triangle_traits_3<Kernel, ArrLinearTraits>
CGAL::Env_sphere_traits_3<ConicTraits>
CGAL::Env_plane_traits_3<Kernel, ArrLinearTraits>
CGAL::Env_surface_data_traits_3<Traits,XyData,SData,Cnv>
Types  
typedef unspecified_type  Surface_3 
represents an arbitrary surface in \( \mathbb{R}^3\).  
typedef unspecified_type  Xy_monotone_surface_3 
represents a weakly \( xy\)monotone surface in \( \mathbb{R}^3\).  
Functor Types  
typedef unspecified_type  Make_xy_monotone_3 
provides the operator (templated by the OutputIterator type) :  
typedef unspecified_type  Construct_projected_boundary_2 
provides the operator (templated by the OutputIterator type) :  
typedef unspecified_type  Construct_projected_intersections_2 
provides the operator (templated by the OutputIterator type) :  
typedef unspecified_type  Compare_z_at_xy_3 
provides the operators :  
typedef unspecified_type  Compare_z_at_xy_above_3 
provides the operator :  
typedef unspecified_type  Compare_z_at_xy_below_3 
provides the operator :  
Creation  
EnvelopeTraits_3 ()  
default constructor.  
EnvelopeTraits_3 (EnvelopeTraits_3 other)  
copy constructor.  
EnvelopeTraits_3  operator= (other) 
assignment operator.  
Accessing Functor Objects  
Make_xy_monotone_3  make_xy_monotone_3_object () 
Construct_projected_boundary_2  construct_projected_boundary_2_object () 
Construct_projected_intersections_2  construct_projected_intersections_2_object () 
Compare_z_at_xy_3  compare_z_at_xy_3_object () 
Compare_z_at_xy_above_3  compare_z_at_xy_above_3_object () 
Compare_z_at_xy_below_3  compare_z_at_xy_below_3_object () 
provides the operators :
Comparison_result operator() (Point_2 p, Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2)
p
, with the precondition that both surfaces are defined over p
. Namely, it returns the comparison result of \( s_1(p)\) and \( s_2(p)\). Comparison_result operator() (X_monotone_curve_2 c, Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2)
Comparison_result operator() (Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2)
Has_boundary_category
is defined as Tag_true
. provides the operator :
Comparison_result operator() (X_monotone_curve_2 c, Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2)
provides the operator :
Comparison_result operator() (X_monotone_curve_2 c, Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2)
provides the operator (templated by the OutputIterator
type) :
OutputIterator operator() (Xy_monotone_surface_3 s, OutputIterator oi)
OutputIterator
is Object
, where Object
wraps either a Point_2
, or a pair<X_monotone_curve_2, Oriented_side>
. In the former case, the object represents an isolated point of the projected boundary. In the latter, more general, case the object represents an \( x\)monotone boundary curve along with an enumeration value which is either ON_NEGATIVE_SIDE
or ON_POSITIVE_SIDE
, indicating whether whether the projection of the surface onto the \( xy\)plane lies below or above this \( x\)monotone curve, respectively. In degenerate case, namely when the surface itself is vertical, and its projection onto the plane is \( 1\)dimensional, the Oriented_side
value is ON_ORIENTED_BOUNDARY
. The operator returns a pasttheend iterator for the output sequence. provides the operator (templated by the OutputIterator
type) :
OutputIterator operator() (Xy_monotone_surface_3 s1, Xy_monotone_surface_3 s2, OutputIterator oi)
s1
and s2
onto the \( xy\)plane, and inserts them into the output iterator. The valuetype of OutputIterator
is Object
, where each Object
either wraps a pair<X_monotone_curve_2,Multiplicity>
instance, which represents a projected intersection curve with its multiplicity (in case the multiplicity is undefined or not known, it should be set to \( 0\)) or an Point_2
instance, representing the projected image of a degenerate intersection (the projection of an isolated intersection point, or of a vertical intersection curve). The operator returns a pasttheend iterator for the output sequence. provides the operator (templated by the OutputIterator
type) :
OutputIterator operator() (Surface_3 S, bool is_lower, OutputIterator oi)
S
into \( xy\)monotone parts and inserts them into the output iterator. The value of is_lower
indicates whether we compute the lower or the upper envelope, so that \( xy\)monotone surfaces that are irrelevant to the lowerenvelope (resp. upperenvelope) computation may be discarded. The valuetype of OutputIterator
is Xy_monotone_surface_3
. The operator returns a pasttheend iterator for the output sequence.