This documentation utilizes visual aids and simplified terminology to enhance understanding while maintaining technical accuracy. For unresolved questions, please contact me via e-mail.
Implements Tutte's embedding algorithm to parameterize 3D open meshes with a single boundary loop onto a 2D convex polygon.
MeshTypes::Mesh2D result_mesh = MeshEmbedding::TutteEmbedding::Parameterize(
const MeshTypes::Mesh3D& mesh,
const std::vector<std::vector<size_t>>& boundary_chains,
const size_t weight_type = 1,
const size_t check_interval = 100,
const size_t max_iterations = 100000000
);
mesh
(MeshTypes::Mesh3D structure)vertices
: Vector of 3D coordinates (v1, v2, ..., vN)faces
: Vector of triangular faces (t1, t2, ..., tM)boundary_chains
(2D vector<size_t>)weight_type
(size_t)check_interval
(size_t)max_iterations
(size_t)result_mesh
(MeshTypes::Mesh2D structure)vertices
: Vector of 2D coordinates (v'1, v'2, ..., v'N)faces
: Vector of triangular faces (t1, t2, ..., tM)Ensure consistent triangle orientations using:
MeshEmbedding::UnifyTriangleOrientations(MeshTypes::Mesh3D& mesh);
prior to parameterization
Double-precision computation required for guaranteed injective mapping
Vertices shared by only one triangle must appear exclusively at boundary chain endpoints to prevent degeneration