#include <MRMeshTriPoint.h>
Public Member Functions | |
MeshTriPoint ()=default | |
MeshTriPoint (NoInit) | |
MeshTriPoint (EdgeId e, TriPointf bary) | |
MeshTriPoint (const MeshEdgePoint &ep) | |
MeshTriPoint (const MeshTopology &topology, VertId v) | |
template<typename T > | |
MeshTriPoint (EdgeId e, const Vector3< T > &p, const Vector3< T > &v0, const Vector3< T > &v1, const Vector3< T > &v2) | |
given a point coordinates computes its barycentric coordinates | |
MRMESH_API VertId | inVertex (const MeshTopology &topology) const |
returns valid vertex id if the point is in vertex, otherwise returns invalid id | |
bool | inVertex () const |
returns true if the point is in a vertex | |
MRMESH_API MeshEdgePoint | onEdge (const MeshTopology &topology) const |
MRMESH_API bool | isBd (const MeshTopology &topology, const FaceBitSet *region=nullptr) const |
returns true if the point is in vertex or on edge, and that location is on the boundary of the region | |
MRMESH_API bool | fromTriangle (const MeshTopology &topology, FaceId f) const |
returns true if the point is inside or on the boundary of given triangular face | |
bool | valid () const |
consider this valid if the edge ID is valid | |
operator bool () const | |
MRMESH_API MeshTriPoint | lnext (const MeshTopology &topology) const |
represents the same point relative to next edge in the same triangle | |
MRMESH_API MeshTriPoint | canonical (const MeshTopology &topology) const |
represents the same point relative to the topology.edgeWithLeft( topology.left( e ) ) | |
MRMESH_API std::array< WeightedVertex, 3 > | getWeightedVerts (const MeshTopology &topology) const |
returns three weighted triangle's vertices with the sum of not-negative weights equal to 1, and the largest weight in the closest vertex | |
bool | operator== (const MeshTriPoint &rhs) const =default |
returns true if two points are equal including equal not-unique representation | |
Public Attributes | |
EdgeId | e |
TriPointf | bary |
Related Symbols | |
(Note that these are not member symbols.) | |
MRMESH_API bool | same (const MeshTopology &topology, const MeshTriPoint &lhs, const MeshTriPoint &rhs) |
returns true if two points are equal considering different representations | |
MRMESH_API bool | fromSameTriangle (const MeshTopology &topology, MeshTriPoint &a, MeshTriPoint &b) |
bool | fromSameTriangle (const MeshTopology &topology, MeshTriPoint &&a, MeshTriPoint &&b) |
MRMESH_API MeshTriPoint | getVertexAsMeshTriPoint (const MeshTopology &topology, EdgeId e, VertId v) |
returns MeshTriPoint representation of given vertex with given edge field; or invalid MeshTriPoint if it is not possible | |
encodes a point inside a triangular mesh face using barycentric coordinates
Notations used below:
v0 - the value in org( e )
v1 - the value in dest( e )
v2 - the value in dest( next( e ) )
|
nodiscarddefault |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
|
inlinenodiscard |
given a point coordinates computes its barycentric coordinates
|
nodiscard |
represents the same point relative to the topology.edgeWithLeft( topology.left( e ) )
|
nodiscard |
returns true if the point is inside or on the boundary of given triangular face
|
nodiscard |
returns three weighted triangle's vertices with the sum of not-negative weights equal to 1, and the largest weight in the closest vertex
|
inlinenodiscard |
returns true if the point is in a vertex
|
nodiscard |
returns valid vertex id if the point is in vertex, otherwise returns invalid id
|
nodiscard |
returns true if the point is in vertex or on edge, and that location is on the boundary of the region
|
nodiscard |
represents the same point relative to next edge in the same triangle
|
nodiscard |
returns valid value if the point is on edge and topology.left(result.e) == topology.left(this->e), otherwise returns invalid MeshEdgePoint
|
inlineexplicitnodiscard |
|
nodiscarddefault |
returns true if two points are equal including equal not-unique representation
|
inlinenodiscard |
consider this valid if the edge ID is valid
|
related |
returns true if points a and b are located insides or on a boundary of the same triangle; if true a.e and b.e are updated to have that triangle on the left
|
related |
returns true if points a and b are located insides or on a boundary of the same triangle; if true a.e and b.e are updated to have that triangle on the left
|
related |
returns MeshTriPoint representation of given vertex with given edge field; or invalid MeshTriPoint if it is not possible
|
related |
returns true if two points are equal considering different representations
TriPointf MR::MeshTriPoint::bary |
barycentric coordinates
a in [0,1], a=0 => point is on next( e ) edge, a=1 => point is in dest( e ) b in [0,1], b=0 => point is on e edge, b=1 => point is in dest( next( e ) ) a+b in [0,1], a+b=0 => point is in org( e ), a+b=1 => point is on prev( e.sym() ) edge
EdgeId MR::MeshTriPoint::e |
left face of this edge is considered