Structural Bioinformatics Library
Template C++ / Python API for developping structural bioinformatics applications.
T_Union_of_balls_boundary_3_side< AlphaComplex3, EXTERIOR_TAG > Class Template Reference

Construction of the mesh of the union of 3D balls such that any point at the surface of the union of balls has a point of the mesh in its epsilon-neighborhood. More...

#include <Union_of_balls_boundary_3_side.hpp>

Public Types

typedef T_Union_of_balls_boundary_3_side< AlphaComplex3, EXTERIOR_TAG > Self
 
typedef AlphaComplex3::Geom_traits::Kernel Geometric_kernel
 
typedef Geometric_kernel::FT FT
 
typedef Geometric_kernel::Point_3 Point_3
 

Constructors

 T_Union_of_balls_boundary_3_side (const AlphaComplex3 &Ac)
 

Functor

CGAL::Sign operator() (const Point_3 &p) const
 

Detailed Description

template<class AlphaComplex3, bool EXTERIOR_TAG = true>
class SBL::GT::T_Union_of_balls_boundary_3_side< AlphaComplex3, EXTERIOR_TAG >

Construction of the mesh of the union of 3D balls such that any point at the surface of the union of balls has a point of the mesh in its epsilon-neighborhood.


It is a predicate that decides if a point belongs to the interior of the boundary of the union of balls. A tag allows to modify the behaviour of the predicate, and to check that a point is in the interior or the exterior boundary of the union of balls.

It works as follows: we search the tetrahedron that contains the query point. If the tetrahedron is interior, then the query point is inside an input ball and then belongs to the interior of the union of balls.

Assume that the tetrahedron is exterior; we search the closest power vertex v to the power point (p, 0): p is inside the ball associated to v, on the boundary or outside. In the two latter cases it is out of any other ball (since v is the closest power vertex to (p, 0)). Then we can decide when p belongs to the interior of the union of balls or not.

If the tag is set to true, at the last step, we just have to check that the tetrahedron that contains the query point is connected to an infinite tetrahedron through exterior facets. This is done by using an Union-Find algorithm.

Member Function Documentation

◆ operator()()

CGAL::Sign operator() ( const Point_3 &  p) const
inline

The positive side is outside, the negative side is inside.