Concept

ImplicitSurfaceTraits_3

Definition

The concept ImplicitSurfaceTraits_3 describes the requirements of the traits class to be plugged as Traits in Implicit_surface_3<Traits, Function>.

When make_surface_mesh is called with a surface of type Implicit_surface_3<Traits,Function>, the surface mesher traits generator generates automatically a traits class that is a model of SurfaceMeshTraits_3. Actually, the concept ImplicitSurfaceTraits_3 provides the types, predicates and constructors that are passed to the generated model of SurfaceMeshTraits_3.

Types

ImplicitSurfaceTraits_3::FT
The numerical type. It must be model of SqrtFieldNumberType and constructible from a double.

ImplicitSurfaceTraits_3::Point_3
The point type. This point type must have a constructor Point_3(FT, FT, FT).

ImplicitSurfaceTraits_3::Line_3
The line type.

ImplicitSurfaceTraits_3::Ray_3
The ray type.

ImplicitSurfaceTraits_3::Segment_3
The segment type.

ImplicitSurfaceTraits_3::Vector_3
The vector type.

ImplicitSurfaceTraits_3::Sphere_3
The sphere type.


ImplicitSurfaceTraits_3::Compute_scalar_product_3
A function object that provides the operator
FT operator()(Vector_3 v, Vector_3 w) which returns the scalar (inner) product of the two vectors v and w.


ImplicitSurfaceTraits_3::Compute_squared_distance_3
A function object that provides the operator
FT operator()(Point_3, Point_3) which returns the squared distance between two points.


ImplicitSurfaceTraits_3::Compute_squared_radius_3
A function object providing the operator
FT operator()(const Sphere_3& s) which returns the squared radius of s.


ImplicitSurfaceTraits_3::Construct_center_3
A function object providing the operator
Point_3 operator()(const Sphere_3& s) which computes the center of the sphere s.


ImplicitSurfaceTraits_3::Construct_midpoint_3
A function object providing the operator
Point_3 operator()(const Point_3& p, const Point_3& q) which computes the midpoint of the segment pq.


ImplicitSurfaceTraits_3::Construct_point_on_3
A function object providing the following operators:
Point_3 operator()(const Line_3& l,int i); which returns an arbitrary point on l. It holds point(i) == point(j), iff i==j. Furthermore, is directed from point(i) to point(j), for all i < j.
Point_3 operator()(const Ray_3& r,int i); which returns a point on r. point(0) is the source, point(i), with i>0, is different from the source.
Precondition: i 0.
Point_3 operator()(const Segment_3& s,int i); which returns source or target of s: point(0) returns the source of s, point(1) returns the target of s. The parameter i is taken modulo 2, which gives easy access to the other end point.


ImplicitSurfaceTraits_3::Construct_segment_3
A function object providing the operators
Segment_3 operator()(const Point_3 &p, const Point_3 &q); which returns a segment with source p and target q. It is directed from the source towards the target.


ImplicitSurfaceTraits_3::Construct_scaled_vector_3
A function object providing the operator
Vector_3 operator()(const Vector_3 &v, const FT& scale) which returns the vector v scaled by a factor scale.


ImplicitSurfaceTraits_3::Construct_translated_point_3
A function object providing the operator
Point_3 operator()(const Point_3& p, const Vector_3& v) which returns the point obtained by translating p by the vector v.


ImplicitSurfaceTraits_3::Construct_vector_3
A function object providing the operator
Vector_3 operator()(const Point_3 &a, const Point_3 &b) which returns the vector b-a.


ImplicitSurfaceTraits_3::Has_on_bounded_side_3
A function object providing the operator
bool operator()(const Sphere_3&s, const Point_3&p); which returns true iff p lies on the bounded side of s.

Operations

The following functions give access to the predicate and construction objects:

Compute_scalar_product_3 traits.compute_scalar_product_3_object ()

Compute_squared_distance_3 traits.compute_squared_distance_3_object ()

Compute_squared_radius_3 traits.compute_squared_radius_3_object ()

Construct_center_3 traits.construct_center_3_object ()

Construct_midpoint_3 traits.construct_midpoint_3_object ()

Construct_point_on_3 traits.construct_point_on_3_object ()

Construct_scaled_vector_3 traits.construct_scaled_vector_3_object ()

Construct_segment_3 traits.construct_segment_3_object ()

Construct_translated_point_3 traits.construct_translated_point_3_object ()

Construct_vector_3 traits.construct_vector_3_object ()

Has_on_bounded_side_3 traits.has_on_bounded_side_3_object ()

Has Models

Any Cgal Kernel.

See Also

Implicit_surface_3<Traits, Function>,
make_surface_mesh