/Conformalized-Mean-Curvature-Flow

My implementation of the conformalized mean curvature flow in C++ using OpenMesh.

Primary LanguageC++

Conformalized-Mean-Curvature-Flow

These are the codes for my PhD research project on computational conformal geometry. They include my own implementation of the conformalized mean curvature flow (cMCF) using the C++ mesh data structure OpenMesh. Also, it included a new algorithm "Sphericalized cMCF" that construct homotopy of degree one maps using cMCF.
For an overview, please refer to my conference proceeding
For more details, please refer to the chapter two in my dissertation.

Instructions:

  1. Install mesh library OpenMesh and numerical solver Eigen

  2. Modify directory paths in Makefile and ensure correct directory paths for all .cpp and .h files from the codes folder

  3. Compile to get executable Map2Sphere.exe

  4. Run Map2Sphere.exe should give the instructions below, e.g. the code Map2Sphere.exe -i input.off -o output.off -f 1 applies cMCF on the mesh (input.off) and output resulting mesh (output.off).

===================================================================================================
===================================================================================================
=                                                                                                 =
=                                         Map2Sphere                                              =
=                                                                                                 =
=     This program reads in a 3D (genus-zero) surface represented by a triangular mesh and        = 
=     maps it conformally onto S^2	                                                          =
=                                                                                                 =
=     Usage is:                                                                                   =
=                 Map2Sphere.exe -i INFILE -o OUTFILE                                             =
=     where:                                                                                      =
=                 -i INFILE        --> Input Mesh file (usually in OFF format)                    =
=                 -o OUTFILE       --> Ouput Mesh file in OFF format                              =
=                 -f FLOW          --> 0: MCF   1:cMCF   2:cMCF w/ projection on sphere           =
=                                      3: Gauss Map initializer   4: Tutte Embedding initializer  =
=                 -w Tutte weights --> 1: cotangent weights    2: graph lapacian                  =
=                 -max             --> Max. no. of steps (integer), default: 2^6 = 64             =
=                 -stps            --> Step size, default: 0.01				          =
=                 -tol             --> Tolerance for sphericity, default: 0.001                   =
=                                                                                                 =
===================================================================================================
===================================================================================================

Visualization Tool

Recommend a free and open-source 3D mesh processing software MeshLab.
Download at www.meshlab.net or source codes and binaries at https://github.com/cnr-isti-vclab/meshlab

Example

  1. Ensure that Map2Sphere.exe is compiled correctly and located at the bin folder.

  2. Download the input mesh file spot.off from the example folder and place it in the same directory with other .cpp and .h files

  3. Execute Code ../bin/Map2Sphere.exe -i ./spot.off -o ./test.off -stps 0.05

  4. Visualize the input and output meshes spot.off and test.off

Copyright

OpenMesh Copyright (c) 2001-2019, RWTH-Aachen University Department of Computer Graphics and Multimedia All rights reserved. www.openmesh.org