CGAL 6.0 - 3D Envelopes
Loading...
Searching...
No Matches
CGAL::Env_triangle_traits_3< Kernel, ArrSegmentTraits > Class Template Reference

#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