Structural Bioinformatics Library
Template C++ / Python API for developping structural bioinformatics applications.
|
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 |
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.
|
inline |
The positive side is outside, the negative side is inside.