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 past-the-end 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 value-type 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 past-the-end 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 lower-envelope (resp. upper-envelope) computation may be discarded. The value-type of OutputIterator
is Xy_monotone_surface_3
. The operator returns a past-the-end iterator for the output sequence.