CGAL 6.1.2 - 3D Envelopes: CGAL::Env_triangle_traits_3< Kernel, ArrSegmentTraits > Class Template Reference

CGAL 6.1.2 - 3D Envelopes

Loading...
Searching...
No Matches
List of all members
CGAL::Env_triangle_traits_3< Kernel, ArrSegmentTraits > Class Template Reference
Reference Manual

`#include <CGAL/Env_triangle_traits_3.h>`

## Inherits from

CGAL::Arr_segment_traits_2< typename Kernel >.

## Definition

template<typename Kernel, typename ArrSegmentTraits = Arr_segment_traits_2<Kernel>>
class CGAL::Env_triangle_traits_3< Kernel, ArrSegmentTraits >

The traits class template `Env_triangle_traits_3` models the `EnvelopeTraits_3` concept, and is used for the construction of lower and upper envelopes of triangles in the space.

When the template is instantiated, the template parameter `Kernel` must be substituted by a CGAL-kernel model, the number type of which should support exact rational arithmetic, to avoid numerical errors and robustness problems. In particular, the number type should support the arithmetic operations \( +\), \( -\), \( \times\), and \( \div\) without loss of precision. For optimal performance, we recommend instantiating the traits class with the predefined `Exact_predicates_exact_constructions_kernel` provided by CGAL. Using this kernel guarantees exactness and robustness, while it incurs only a minor overhead (in comparison to working with a fast, inexact number type) for most inputs.

The second template parameter, namely `ArrSegmentTraits`, should be substituted by a 2D arrangement geometry traits class that supports segments. By default it is substituted by `Arr_segment_traits_2<Kernel>`.

Note that when we project the boundary of a triangle, or the intersection of two triangles, onto the \( xy\)-plane, we obtain line segments. Indeed, `Env_triangle_traits_3` inherits from the traits class that substitutes `ArrSegmentTraits`, and extends it by adding operations on 3D objects, namely spatial triangles. Note that the traits class does not define `Kernel::Triangle_3` as its surface (and \( xy\)-monotone surface) type, as one may expect. This is because the traits class needs to store extra data with the triangles in order to efficiently operate on them. Nevertheless, the nested `Xy_monotone_surface_3` and `Surface_3` types are however constructible from a `Kernel::Triangle_3` instance and are also convertible to a `Kernel::Triangle_3` object. Both types, `Xy_monotone_surface_3` and `Surface_3`, refer to the same class, as every triangle is (weakly) \( xy\)-monotone).

Is model of
  `EnvelopeTraits_3`

Examples
  Envelope_3/envelope_triangles.cpp.

## Additional Inherited Members
Public Types inherited from CGAL::Arr_segment_traits_2< typename Kernel >
typedef X_monotone_curve_2 | Curve_2
typedef Kernel::Segment_2 | Segment_2
typedef Kernel::Line_2 | Line_2
typedef Kernel::Point_2 | Point_2
Public Types inherited from Kernel
typedef unspecified_type | FT
typedef unspecified_type | RT
typedef unspecified_type | Boolean
typedef unspecified_type | Sign
typedef unspecified_type | Comparison_result
typedef unspecified_type | Orientation
typedef unspecified_type | Oriented_side
typedef unspecified_type | Bounded_side
typedef unspecified_type | Angle
typedef unspecified_type | Cartesian_const_iterator_2
typedef unspecified_type | Point_2
typedef unspecified_type | Weighted_point_2
typedef unspecified_type | Vector_2
typedef unspecified_type | Direction_2
typedef unspecified_type | Line_2
typedef unspecified_type | Ray_2
typedef unspecified_type | Segment_2
typedef unspecified_type | Triangle_2
typedef unspecified_type | Iso_rectangle_2
typedef unspecified_type | Circle_2
typedef unspecified_type | Object_2
typedef unspecified_type | Construct_point_2
typedef unspecified_type | Construct_weighted_point_2
typedef unspecified_type | Construct_vector_2
typedef unspecified_type | Construct_direction_2
typedef unspecified_type | Construct_segment_2
typedef unspecified_type | Construct_line_2
typedef unspecified_type | Construct_ray_2
typedef unspecified_type | Construct_circle_2
typedef unspecified_type | Construct_triangle_2
typedef unspecified_type | Construct_iso_rectangle_2
typedef unspecified_type | Construct_object_2
typedef unspecified_type | Construct_scaled_vector_2
typedef unspecified_type | Construct_difference_of_vectors_2
typedef unspecified_type | Construct_sum_of_vectors_2
typedef unspecified_type | Construct_divided_vector_2
typedef unspecified_type | Construct_translated_point_2
typedef unspecified_type | Construct_point_on_2
typedef unspecified_type | Construct_projected_point_2
typedef unspecified_type | Construct_projected_xy_point_2
typedef unspecified_type | Construct_second_point_2
typedef unspecified_type | Construct_cartesian_const_iterator_2
typedef unspecified_type | Construct_vertex_2
typedef unspecified_type | Construct_bbox_2
typedef unspecified_type | Construct_perpendicular_vector_2
typedef unspecified_type | Construct_perpendicular_direction_2
typedef unspecified_type | Construct_perpendicular_line_2
typedef unspecified_type | Construct_midpoint_2
typedef unspecified_type | Construct_equidistant_line_3
typedef unspecified_type | Construct_center_2
typedef unspecified_type | Construct_centroid_2
typedef unspecified_type | Construct_barycenter_2
typedef unspecified_type | Construct_circumcenter_2
typedef unspecified_type | Construct_weighted_circumcenter_2
typedef unspecified_type | Construct_bisector_2
typedef unspecified_type | Construct_radical_axis_2
typedef unspecified_type | Construct_radical_line_2
typedef unspecified_type | Construct_opposite_direction_2
typedef unspecified_type | Construct_opposite_segment_2
typedef unspecified_type | Construct_opposite_ray_2
typedef unspecified_type | Construct_opposite_line_2
typedef unspecified_type | Construct_opposite_triangle_2
typedef unspecified_type | Construct_opposite_circle_2
typedef unspecified_type | Construct_opposite_vector_2
typedef unspecified_type | Construct_source_2
typedef unspecified_type | Construct_target_2
typedef unspecified_type | Construct_max_vertex_2
typedef unspecified_type | Construct_min_vertex_2
typedef unspecified_type | Intersect_2
typedef unspecified_type | Assign_2
typedef unspecified_type | Compute_weight_2
typedef unspecified_type | Compute_x_2
typedef unspecified_type | Compute_y_2
typedef unspecified_type | Compute_a_2
typedef unspecified_type | Compute_b_2
typedef unspecified_type | ComputeC_2
typedef unspecified_type | Compute_dx_2
typedef unspecified_type | Compute_dy_2
typedef unspecified_type | Compute_hx_2
typedef unspecified_type | Compute_hy_2
typedef unspecified_type | Compute_hw_2
typedef unspecified_type | Compute_L_infinity_distance_2
typedef unspecified_type | Compute_xmax_2
typedef unspecified_type | Compute_xmin_2
typedef unspecified_type | Compute_ymax_2
typedef unspecified_type | Compute_ymin_2
typedef unspecified_type | Compute_y_at_x_2
typedef unspecified_type | Compute_squared_distance_2
typedef unspecified_type | Compute_squared_length_2
typedef unspecified_type | Compute_squared_radius_2
typedef unspecified_type | Compute_squared_radius_smallest_orthogonal_circle_2
typedef unspecified_type | Compute_power_product_2
typedef unspecified_type | Compute_area_2
typedef unspecified_type | Compute_determinant_2
typedef unspecified_type | Compute_scalar_product_2
typedef unspecified_type | Angle_2
typedef unspecified_type | Equal_2
typedef unspecified_type | Equal_x_2
typedef unspecified_type | Equal_y_2
typedef unspecified_type | Less_x_2
typedef unspecified_type | Less_y_2
typedef unspecified_type | Less_xy_2
typedef unspecified_type | Less_yx_2
typedef unspecified_type | Compare_x_2
typedef unspecified_type | Compare_x_at_y_2
typedef unspecified_type | Compare_y_2
typedef unspecified_type | Compare_xy_2
typedef unspecified_type | Compare_yx_2
typedef unspecified_type | Compare_y_at_x_2
typedef unspecified_type | Compare_distance_2
typedef unspecified_type | Compare_power_distance_2
typedef unspecified_type | Compare_square_distance_2
typedef unspecified_type | Compare_angle_with_x_axis_2
typedef unspecified_type | Compare_signed_distance_to_line_2
typedef unspecified_type | Compare_slope_2
typedef unspecified_type | Less_distance_to_point_2
typedef unspecified_type | Less_signed_distance_to_line_2
typedef unspecified_type | Less_rotate_ccw_2
typedef unspecified_type | Left_turn_2
typedef unspecified_type | Collinear_2
typedef unspecified_type | Orientation_2
typedef unspecified_type | Side_of_oriented_circle_2
typedef unspecified_type | Side_of_bounded_circle_2
typedef unspecified_type | Power_side_of_oriented_power_circle_2
typedef unspecified_type | Power_side_of_bounded_power_circle_2
typedef unspecified_type | Is_horizontal_2
typedef unspecified_type | Is_vertical_2
typedef unspecified_type | Is_degenerate_2
typedef unspecified_type | Has_on_2
typedef unspecified_type | Collinear_has_on_2
typedef unspecified_type | Has_on_bounded_side_2
typedef unspecified_type | Has_on_unbounded_side_2
typedef unspecified_type | Has_on_boundary_2
typedef unspecified_type | Has_on_positive_side_2
typedef unspecified_type | Has_on_negative_side_2
typedef unspecified_type | Oriented_side_2
typedef unspecified_type | Bounded_side_2
typedef unspecified_type | Are_parallel_2
typedef unspecified_type | Are_ordered_along_line_2
typedef unspecified_type | Are_strictly_ordered_along_line_2
typedef unspecified_type | Collinear_are_ordered_along_line_2
typedef unspecified_type | Collinear_are_strictly_ordered_along_line_2
typedef unspecified_type | Counterclockwise_in_between_2
typedef unspecified_type | Do_intersect_2
typedef unspecified_type | Cartesian_const_iterator_3
typedef unspecified_type | Point_3
typedef unspecified_type | Weighted_point_3
typedef unspecified_type | Vector_3
typedef unspecified_type | Direction_3
typedef unspecified_type | Iso_cuboid_3
typedef unspecified_type | Line_3
typedef unspecified_type | Ray_3
typedef unspecified_type | Circle_3
typedef unspecified_type | Sphere_3
typedef unspecified_type | Segment_3
typedef unspecified_type | Plane_3
typedef unspecified_type | Triangle_3
typedef unspecified_type | Tetrahedron_3
typedef unspecified_type | Object_3
typedef unspecified_type | Construct_point_3
typedef unspecified_type | Construct_weighted_point_3
typedef unspecified_type | Construct_vector_3
typedef unspecified_type | Construct_direction_3
typedef unspecified_type | Construct_plane_3
typedef unspecified_type | Construct_iso_cuboid_3
typedef unspecified_type | Construct_line_3
typedef unspecified_type | Construct_ray_3
typedef unspecified_type | Construct_sphere_3
typedef unspecified_type | Construct_segment_3
typedef unspecified_type | Construct_triangle_3
typedef unspecified_type | Construct_tetrahedron_3
typedef unspecified_type | Construct_circle_3
typedef unspecified_type | Construct_object_3
typedef unspecified_type | Construct_scaled_vector_3
typedef unspecified_type | Construct_translated_point_3
typedef unspecified_type | Construct_point_on_3
typedef unspecified_type | Construct_projected_point_3
typedef unspecified_type | Construct_lifted_point_3
typedef unspecified_type | Construct_cartesian_const_iterator_3
typedef unspecified_type | Construct_vertex_3
typedef unspecified_type | Construct_source_3
typedef unspecified_type | Construct_target_3
typedef unspecified_type | Construct_max_vertex_3
typedef unspecified_type | Construct_min_vertex_3
typedef unspecified_type | Construct_bbox_3
typedef unspecified_type | Construct_supporting_plane_3
typedef unspecified_type | Construct_orthogonal_vector_3
typedef unspecified_type | Construct_base_vector_3
typedef unspecified_type | Construct_difference_of_vectors_3
typedef unspecified_type | Construct_sum_of_vectors_3
typedef unspecified_type | Construct_divided_vector_3
typedef unspecified_type | Construct_normal_3
typedef unspecified_type | Construct_perpendicular_plane_3
typedef unspecified_type | Construct_radical_plane_3
typedef unspecified_type | Construct_perpendicular_line_3
typedef unspecified_type | Construct_midpoint_3
typedef unspecified_type | Construct_center_3
typedef unspecified_type | Construct_centroid_3
typedef unspecified_type | Construct_circumcenter_3
typedef unspecified_type | Construct_weighted_circumcenter_3
typedef unspecified_type | Construct_bisector_3
typedef unspecified_type | Construct_cross_product_vector_3
typedef unspecified_type | Construct_barycenter_3
typedef unspecified_type | Construct_second_point_3
typedef unspecified_type | Construct_opposite_direction_3
typedef unspecified_type | Construct_opposite_segment_3
typedef unspecified_type | Construct_opposite_ray_3
typedef unspecified_type | Construct_opposite_line_3
typedef unspecified_type | Construct_opposite_plane_3
typedef unspecified_type | Construct_opposite_sphere_3
typedef unspecified_type | Construct_opposite_vector_3
typedef unspecified_type | Intersect_3
typedef unspecified_type | Assign_3
typedef unspecified_type | Compute_weight_3
typedef unspecified_type | Compute_x_3
typedef unspecified_type | Compute_y_3
typedef unspecified_type | Compute_z_3
typedef unspecified_type | Compute_a_3
typedef unspecified_type | Compute_b_3
typedef unspecified_type | Compute_c_3
typedef unspecified_type | Compute_d_3
typedef unspecified_type | Compute_hx_3
typedef unspecified_type | Compute_hy_3
typedef unspecified_type | Compute_hz_3
typedef unspecified_type | Compute_hw_3
typedef unspecified_type | Compute_L_infinity_distance_3
typedef unspecified_type | Compute_dx_3
typedef unspecified_type | Compute_dy_3
typedef unspecified_type | Compute_dz_3
typedef unspecified_type | Compute_xmax_3
typedef unspecified_type | Compute_xmin_3
typedef unspecified_type | Compute_ymax_3
typedef unspecified_type | Compute_ymin_3
typedef unspecified_type | Compute_zmax_3
typedef unspecified_type | Compute_zmin_3
typedef unspecified_type | Compute_area_3
typedef unspecified_type | Compute_squared_area_3
typedef unspecified_type | Compute_area_divided_by_pi_3
typedef unspecified_type | Compute_approximate_area_3
typedef unspecified_type | Compute_approximate_angle_3
typedef unspecified_type | Compute_approximate_dihedral_angle_3
typedef unspecified_type | Compute_determinant_3
typedef unspecified_type | Compute_scalar_product_3
typedef unspecified_type | Compute_squared_distance_3
typedef unspecified_type | Compute_squared_length_3
typedef unspecified_type | Compute_squared_length_divided_by_pi_square_3
typedef unspecified_type | Compute_approximate_squared_length_3
typedef unspecified_type | Compute_squared_radius_3
typedef unspecified_type | Compute_volume_3
typedef unspecified_type | Compute_power_product_3
typedef unspecified_type | Compute_power_distance_to_power_sphere_3
typedef unspecified_type | Compute_squared_radius_smallest_orthogonal_sphere_3
typedef unspecified_type | Angle_3
typedef unspecified_type | Equal_3
typedef unspecified_type | Equal_x_3
typedef unspecified_type | Equal_y_3
typedef unspecified_type | Equal_z_3
typedef unspecified_type | Equal_xy_3
typedef unspecified_type | Less_x_3
typedef unspecified_type | Less_y_3
typedef unspecified_type | Less_z_3
typedef unspecified_type | Less_xy_3
typedef unspecified_type | Less_xyz_3
typedef unspecified_type | Compare_weighted_squared_radius_3
typedef unspecified_type | Compare_x_3
typedef unspecified_type | Compare_y_3
typedef unspecified_type | Compare_z_3
typedef unspecified_type | Compare_xy_3
typedef unspecified_type | Compare_xyz_3
typedef unspecified_type | Compare_slope_3
typedef unspecified_type | Compare_squared_distance_3
typedef unspecified_type | Less_signed_distance_to_plane_3
typedef unspecified_type | Less_distance_to_point_3
typedef unspecified_type | Compare_angle_3
typedef unspecified_type | Compare_dihedral_angle_3
typedef unspecified_type | Compare_distance_3
typedef unspecified_type | Compare_power_distance_3
typedef unspecified_type | Collinear_3
typedef unspecified_type | Coplanar_3
typedef unspecified_type | Orientation_3
typedef unspecified_type | Coplanar_orientation_3
typedef unspecified_type | Coplanar_side_of_bounded_circle_3
typedef unspecified_type | Side_of_oriented_sphere_3
typedef unspecified_type | Side_of_bounded_sphere_3
typedef unspecified_type | Power_side_of_oriented_power_sphere_3
typedef unspecified_type | Power_side_of_bounded_power_sphere_3
typedef unspecified_type | Is_degenerate_3
typedef unspecified_type | Has_on_3
typedef unspecified_type | Has_on_bounded_side_3
typedef unspecified_type | Has_on_unbounded_side_3
typedef unspecified_type | Has_on_boundary_3
typedef unspecified_type | Has_on_positive_side_3
typedef unspecified_type | Has_on_negative_side_3
typedef unspecified_type | Non_zero_coordinate_index_3
typedef unspecified_type | Oriented_side_3
typedef unspecified_type | Bounded_side_3
typedef unspecified_type | Are_parallel_3
typedef unspecified_type | Are_ordered_along_line_3
typedef unspecified_type | Are_strictly_ordered_along_line_3
typedef unspecified_type | Collinear_are_ordered_along_line_3
typedef unspecified_type | Collinear_are_strictly_ordered_along_line_3
typedef unspecified_type | Do_intersect_3
Public Member Functions inherited from Kernel
Kernel::Construct_vector_2 | construct_vector_2_object () const
Static Public Attributes inherited from Kernel
static const bool | Has_filtered_predicates