2#include <muda/muda_def.h>
3#include <muda/tools/debug_log.h>
4#include <muda/ext/eigen/eigen_core_cxx20.h>
5#include <Eigen/Geometry>
7namespace muda::distance
9enum class PointPointDistanceType :
unsigned char
14enum class PointEdgeDistanceType :
unsigned char
21enum class PointTriangleDistanceType :
unsigned char
32enum class EdgeEdgeDistanceType :
unsigned char
46template <
class T,
int dim>
47MUDA_GENERIC PointPointDistanceType point_point_distance_type(
48 const Eigen::Vector<T, dim>& p0,
const Eigen::Vector<T, dim>& p1);
50template <
class T,
int dim>
51MUDA_GENERIC PointEdgeDistanceType
52point_edge_distance_type(
const Eigen::Vector<T, dim>& p,
53 const Eigen::Vector<T, dim>& e0,
54 const Eigen::Vector<T, dim>& e1);
56template <
class T,
int dim>
57MUDA_GENERIC PointEdgeDistanceType
58point_edge_distance_type(
const Eigen::Vector<T, dim>& p,
59 const Eigen::Vector<T, dim>& e0,
60 const Eigen::Vector<T, dim>& e1,
64MUDA_GENERIC PointTriangleDistanceType
65point_triangle_distance_type(
const Eigen::Vector<T, 3>& p,
66 const Eigen::Vector<T, 3>& t0,
67 const Eigen::Vector<T, 3>& t1,
68 const Eigen::Vector<T, 3>& t2);
72MUDA_GENERIC EdgeEdgeDistanceType edge_edge_distance_type(
const Eigen::Vector<T, 3>& ea0,
73 const Eigen::Vector<T, 3>& ea1,
74 const Eigen::Vector<T, 3>& eb0,
75 const Eigen::Vector<T, 3>& eb1);
79#include "details/distance_type.inl"