CGAL 4.12 - 3D Mesh Generation
BisectionGeometricTraits_3 Concept Reference

## 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 $$\mathbb{R}^3$$ to $$\mathbb{R}$$), the do-intersect predicate with a segment is computed by evaluations of the function values at both end points of the segment.

Has Models:
Any CGAL Kernel.
ImplicitSurfaceTraits_3
IntersectionGeometricTraits_3
CGAL::Implicit_mesh_domain_3<Function,BGT>
CGAL::Labeled_image_mesh_domain_3<Image,BGT>

## Types

typedef unspecified_type FT
Numerical type. More...

typedef unspecified_type Point_3
The point type. More...

typedef unspecified_type Segment_3
Segment type.

typedef unspecified_type Ray_3
Ray type.

typedef unspecified_type Line_3
Line type.

typedef unspecified_type Vector_3
Vector type.

typedef unspecified_type Sphere_3
Sphere type.

typedef unspecified_type Compute_scalar_product_3
Model of Kernel::ComputeScalarProduct_3. More...

typedef unspecified_type Compute_squared_distance_3
Model of Kernel::ComputeSquaredDistance_3. More...

Model of Kernel::ComputeSquaredRadius_3. More...

typedef unspecified_type Construct_center_3
Model of Kernel::ConstructCenter_3. More...

typedef unspecified_type Construct_midpoint_3
Model of Kernel::ConstructMidpoint_3. More...

typedef unspecified_type Construct_point_on_3
Model of Kernel::ConstructPoint_3. More...

typedef unspecified_type Construct_segment_3
Model of Kernel::ConstructSegment_3. More...

typedef unspecified_type Construct_scaled_vector_3
Model of Kernel::ConstructScaledVector_3. More...

typedef unspecified_type Construct_translated_point_3
Model of Kernel::ConstructTranslatedPoint_3. More...

typedef unspecified_type Construct_vector_3
Model of Kernel::ConstructVertex_3. More...

typedef unspecified_type Has_on_bounded_side_3
Model of Kernel::HasOnBoundedSide_3. More...

## Operations

Compute_scalar_product_3 compute_scalar_product_3_object ()

Compute_squared_distance_3 compute_squared_distance_3_object ()

Construct_center_3 construct_center_3_object ()

Construct_midpoint_3 construct_midpoint_3_object ()

Construct_point_on_3 construct_point_on_3_object ()

Construct_scaled_vector_3 construct_scaled_vector_3_object ()

Construct_segment_3 construct_segment_3_object ()

Construct_translated_point_3 construct_translated_point_3_object ()

Construct_vector_3 construct_vector_3_object ()

Has_on_bounded_side_3 has_on_bounded_side_3_object ()

## ◆ Compute_scalar_product_3

Model of Kernel::ComputeScalarProduct_3.

That function object must provide the operator:

• FT operator()(Vector_3 v, Vector_3 w) which returns the scalar (inner) product of the two vectors v and w.

## ◆ Compute_squared_distance_3

Model of Kernel::ComputeSquaredDistance_3.

That function object must provide the operator:

• FT operator()(Point_3, Point_3) which returns the squared distance between two points.

Model of Kernel::ComputeSquaredRadius_3.

That function object must provide the operator:

• FT operator()(Sphere_3 s) which returns the squared radius of s.

## ◆ Construct_center_3

Model of Kernel::ConstructCenter_3.

That function object must provide the operator:

• Point_3 operator()(Sphere_3 s) which returns the center of the sphere s.

## ◆ Construct_midpoint_3

Model of Kernel::ConstructMidpoint_3.

That function object must provide the operator:

• Point_3 operator()(Point_3 p, Point_3 q) which computes the midpoint of the segment pq.

## ◆ Construct_point_on_3

Model of Kernel::ConstructPoint_3.

That function object must provide 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 \geq0$$.
• 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.

## ◆ Construct_scaled_vector_3

Model of Kernel::ConstructScaledVector_3.

That function object must provide the operator:

• Vector_3 operator()(Vector_3 v, FT scale) which returns the vector v scaled by a factor scale.

## ◆ Construct_segment_3

Model of Kernel::ConstructSegment_3.

That function object must provide 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.

## ◆ Construct_translated_point_3

Model of Kernel::ConstructTranslatedPoint_3.

That function object must provide the operator:

• Point_3 operator()(Point_3 p, Vector_3 v) which returns the point obtained by translating p by the vector v.

## ◆ Construct_vector_3

Model of Kernel::ConstructVertex_3.

That function object must provide the operator:

• Vector_3 operator()(Point_3 a, Point_3 b) which returns the vector b-a.

## ◆ FT

Numerical type.

Must be a model of FieldNumberType and FieldWithSqrt, and constructible from a double.

## ◆ Has_on_bounded_side_3

Model of Kernel::HasOnBoundedSide_3.

That function object must provide the operator:

• bool operator()(Sphere_3 s, Point_3 p) which returns true iff p lies on the bounded side of s.

## ◆ Point_3

The point type.

Must have a constructor Point_3(FT, FT, FT)`.