Concept

BisectionGeometricTraits_3

Definition

The concept BisectionGeometricTraits_3 describes a geometric traits class that provides the basic types and operations to implement a model of MeshDomain_3 based solely on intersection detections. Points in the non-empty intersections are herein computed by bisection.

Such traits class is relevant when intersection detections can be performed efficiently. For instance, when bounding surfaces are implicitly described by a function (such as an isosurface of a 3D function from 3 to ), the do-intersect predicate with a segment is computed by evaluations of the function values at both end points of the segment.

Types

BisectionGeometricTraits_3::FT
Numerical type. Must be a model of SqrtFieldNumberType and constructible from a double.

BisectionGeometricTraits_3::Point_3
The point type. Must have a constructor Point_3(FT, FT, FT).

BisectionGeometricTraits_3::Segment_3
Segment type.

BisectionGeometricTraits_3::Ray_3
Ray type.

BisectionGeometricTraits_3::Line_3
Line type.

BisectionGeometricTraits_3::Vector_3
Vector type.

BisectionGeometricTraits_3::Sphere_3
Sphere type.


BisectionGeometricTraits_3::Compute_scalar_product_3
Function object providing the operator
FT operator()(Vector_3 v, Vector_3 w) which returns the scalar (inner) product of the two vectors v and w.


BisectionGeometricTraits_3::Compute_squared_distance_3
Function object providing the operator
FT operator()(Point_3, Point_3) which returns the squared distance between two points.


BisectionGeometricTraits_3::Compute_squared_radius_3
Function object providing the operator
FT operator()(Sphere_3 s) which returns the squared radius of s.


BisectionGeometricTraits_3::Construct_center_3
Function object providing the operator
Point_3 operator()(Sphere_3 s) which returns the center of the sphere s.


BisectionGeometricTraits_3::Construct_midpoint_3
Function object providing the operator
Point_3 operator()(Point_3 p, Point_3 q) which computes the midpoint of the segment pq.


BisectionGeometricTraits_3::Construct_point_on_3
Function object providing the following operators:
Point_3 operator()(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()(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()(Segment_3 s,int i); which returns either source or target of s: point(0) returns the source of s, point(1) returns the target of s. Parameter i is taken modulo 2, which gives easy access to the other end point.


BisectionGeometricTraits_3::Construct_segment_3
Function object providing the operator
Segment_3 operator()(Point_3 p, Point_3 q); which returns a segment with source p and target q, directed from the source to the target.


BisectionGeometricTraits_3::Construct_scaled_vector_3
Function object providing the operator
Vector_3 operator()(Vector_3 v, FT scale) which returns the vector v scaled by a factor scale.


BisectionGeometricTraits_3::Construct_translated_point_3
Function object providing the operator
Point_3 operator()(Point_3 p, Vector_3 v) which returns the point obtained by translating p by the vector v.


BisectionGeometricTraits_3::Construct_vector_3
Function object providing the operator
Vector_3 operator()(Point_3 a, Point_3 b) which returns the vector b-a.


BisectionGeometricTraits_3::Has_on_bounded_side_3
Function object providing the operator
bool operator()(Sphere_3 s, 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

ImplicitSurfaceTraits_3
IntersectionGeometricTraits_3
CGAL::Implicit_mesh_domain_3<Function,BGT>
CGAL::Labeled_image_mesh_domain_3<Image,BGT>