CGAL 5.1 - 3D Generalized Barycentric Coordinates
CGAL::Barycentric_coordinates Namespace Reference

Classes

class  BarycentricTraits_3
 A concept that describes the set of requirements of the template parameter GeomTraits used to parameterize all classes and functions with 3D barycentric coordinates from the namespace CGAL::Barycentric_coordinates. The concept BarycentricTraits_3 extends the concept BarycentricTraits_2 and adds the requirements for 3D objects. More...
 
class  Discrete_harmonic_2
 
class  Discrete_harmonic_coordinates_3
 3D discrete harmonic coordinates. More...
 
class  Generalized_barycentric_coordinates_2
 
class  Mean_value_2
 
class  Mean_value_coordinates_3
 3D mean value coordinates. More...
 
class  Segment_coordinates_2
 
class  Triangle_coordinates_2
 
class  Wachspress_2
 
class  Wachspress_coordinates_3
 3D Wachspress coordinates. More...
 

Functions

template<typename TriangleMesh , typename OutIterator , typename GeomTraits , typename VertexToPointMap >
std::pair< OutIterator, bool > boundary_coordinates_3 (const TriangleMesh &triangle_mesh, const typename GeomTraits::Point_3 &query, OutIterator c_begin, const GeomTraits &traits, const VertexToPointMap vertex_to_point_map)
 computes boundary barycentric coordinates. More...
 
template<typename TriangleMesh , typename Point_3 , typename OutIterator , typename VertexToPointMap = typename property_map_selector<TriangleMesh, CGAL::vertex_point_t>::const_type>
std::pair< OutIterator, bool > boundary_coordinates_3 (const TriangleMesh &triangle_mesh, const Point_3 &query, OutIterator c_begin, const VertexToPointMap vertex_to_point_map)
 computes boundary barycentric coordinates. More...
 
template<typename Point_3 , typename TriangleMesh , typename OutIterator >
OutIterator discrete_harmonic_coordinates_3 (const TriangleMesh &triangle_mesh, const Point_3 &query, OutIterator c_begin, const Computation_policy_3 policy=Computation_policy_3::FAST)
 computes 3D discrete harmonic coordinates. More...
 
template<typename Point_3 , typename TriangleMesh , typename OutIterator >
OutIterator mean_value_coordinates_3 (const TriangleMesh &triangle_mesh, const Point_3 &query, OutIterator c_begin, const Computation_policy_3 policy=Computation_policy_3::FAST_WITH_EDGE_CASES)
 computes 3D mean value coordinates. More...
 
template<typename OutIterator , typename GeomTraits >
OutIterator tetrahedron_coordinates (const typename GeomTraits::Point_3 &p0, const typename GeomTraits::Point_3 &p1, const typename GeomTraits::Point_3 &p2, const typename GeomTraits::Point_3 &p3, const typename GeomTraits::Point_3 &query, OutIterator c_begin, const GeomTraits &traits)
 computes tetrahedron coordinates. More...
 
template<typename GeomTraits >
std::array< typename GeomTraits::FT, 4 > tetrahedron_coordinates_in_array (const typename GeomTraits::Point_3 &p0, const typename GeomTraits::Point_3 &p1, const typename GeomTraits::Point_3 &p2, const typename GeomTraits::Point_3 &p3, const typename GeomTraits::Point_3 &query, const GeomTraits &traits)
 computes tetrahedron coordinates. More...
 
template<typename Point_3 , typename PolygonMesh , typename OutIterator >
OutIterator wachspress_coordinates_3 (const PolygonMesh &polygon_mesh, const Point_3 &query, OutIterator c_begin, const Computation_policy_3 policy=Computation_policy_3::FAST)
 computes 3D Wachspress coordinates. More...
 

Computation Policies

enum  Computation_policy_3 { Computation_policy_3::FAST = 0, Computation_policy_3::FAST_WITH_EDGE_CASES = 1 }
 Computation_policy_3 provides a way to choose an asymptotic time complexity of the algorithm and its precision for computing 3D barycentric weights and coordinates. More...
 

Definition

The namespace Barycentric_coordinates contains implementations of all generalized barycentric coordinates: 2D, 3D, related enumerations, etc.

Enumeration Type Documentation

◆ Computation_policy_3

Computation_policy_3 provides a way to choose an asymptotic time complexity of the algorithm and its precision for computing 3D barycentric weights and coordinates.

Enumerator
FAST 

Computation has a linear time complexity with respect to the number of polygon vertices, but may suffer imprecisions near the polygon boundary.

No extra checks are carried out.

FAST_WITH_EDGE_CASES 

Computation has a linear time complexity with respect to the number of polygon vertices, but may suffer imprecisions near the polygon boundary.

In addition, we check a position of the query point with respect to the polygon and use different computation strategies for different positions.

Examples
Barycentric_coordinates_3/discrete_harmonic_coordinates.cpp, Barycentric_coordinates_3/mean_value_coordinates.cpp, and Barycentric_coordinates_3/wachspress_coordinates.cpp.