35 U
interpolate(
const U & v0,
const U & v1,
const U & v2 )
const
36 {
return ( 1 -
a -
b ) * v0 +
a * v1 +
b * v2; }
61 const T v11 = dot( v1, v1 );
62 const T v12 = dot( v1, v2 );
63 const T v22 = dot( v2, v2 );
64 const T det = v11 * v22 - v12 * v12;
71 const T pv1 = dot( p, v1 );
72 const T pv2 = dot( p, v2 );
73 a = std::clamp( ( 1 / det ) * ( v22 * pv1 - v12 * pv2 ), T(0), T(1) );
74 b = std::clamp( ( 1 / det ) * (-v12 * pv1 + v11 * pv2 ), T(0), T(1) - a );
80 if ( a <= eps && b <= eps )
82 if ( 1 - a - b <= eps )
95 if ( 1 - a - b <= eps )
Definition MRCameraOrientationPlugin.h:8
Definition MRMesh/MRMeshFwd.h:56
encodes a point inside a line segment using relative distance in [0,1]
Definition MRSegmPoint.h:14
encodes a point inside a triangle using barycentric coordinates
Definition MRMesh/MRTriPoint.h:14
TriPoint lnext() const
represents the same point relative to next edge in the same triangle
Definition MRMesh/MRTriPoint.h:39
constexpr TriPoint() noexcept
Definition MRMesh/MRTriPoint.h:22
constexpr TriPoint(T a, T b) noexcept
Definition MRMesh/MRTriPoint.h:24
TriPoint(const Vector3< T > &p, const Vector3< T > &v1, const Vector3< T > &v2)
given a point coordinates and triangle (0,v1,v2) computes barycentric coordinates of the point
U interpolate(const U &v0, const U &v1, const U &v2) const
given three values in three vertices, computes interpolated value at this barycentric coordinates
Definition MRMesh/MRTriPoint.h:35
constexpr int inVertex() const
returns [0,2] if the point is in a vertex or -1 otherwise
static constexpr auto eps
Definition MRMesh/MRTriPoint.h:20
T b
b in [0,1], b=0 => point is on [v0,v1] edge, b=1 => point is in v2
Definition MRMesh/MRTriPoint.h:18
T a
a in [0,1], a=0 => point is on [v2,v0] edge, a=1 => point is in v1
Definition MRMesh/MRTriPoint.h:17
constexpr int onEdge() const
constexpr bool operator==(const TriPoint &rhs) const =default
returns true if two points have equal (a,b) representation
TriPoint(NoInit) noexcept
Definition MRMesh/MRTriPoint.h:23
TriPoint(const Vector3< T > &p, const Vector3< T > &v0, const Vector3< T > &v1, const Vector3< T > &v2)
given a point coordinates and triangle (v0,v1,v2) computes barycentric coordinates of the point
Definition MRMesh/MRTriPoint.h:29
constexpr TriPoint(const TriPoint< U > &s)
Definition MRMesh/MRTriPoint.h:26
Definition MRMesh/MRVector3.h:19