26 [[nodiscard]]
float cotan( UndirectedEdgeId ue )
const { EdgeId e{ ue };
return leftCotan( e ) + leftCotan( e.sym() ); }
31 [[nodiscard]]
bool isDelone( UndirectedEdgeId ue,
float threshold = 0 )
const {
return cotan( ue ) >= threshold; }
#define MRMESH_API
Definition MRMesh/MRMeshFwd.h:79
Definition MRMesh/MRMeshTopology.h:18
Definition MREdgeLengthMesh.h:13
MRMESH_API std::optional< float > edgeLengthAfterFlip(EdgeId e) const
MRMESH_API bool flipEdge(EdgeId e)
float cotan(UndirectedEdgeId ue) const
Definition MREdgeLengthMesh.h:26
bool isDelone(UndirectedEdgeId ue, float threshold=0) const
Definition MREdgeLengthMesh.h:31
MeshTopology topology
Definition MREdgeLengthMesh.h:14
MRMESH_API float leftCotan(EdgeId e) const
static MRMESH_API EdgeLengthMesh fromMesh(const Mesh &mesh)
construct EdgeLengthMesh from an ordinary mesh
UndirectedEdgeScalars edgeLengths
Definition MREdgeLengthMesh.h:15
Definition MRMesh/MRMesh.h:22