|
|
|
a. face.nf50k.m
|
b. face.nf50k.uv.m
|
c. face.nf50k.pos.m
|
|
|
|
a. face.nf50k.m
|
b. face.nf50k.square_uv.m
|
c. face.nf50k.square_pos.m
|
Algorithm Description
User specifies the target Gaussian curvature at each vertex. Yamabe flow computes a unique metric, which induces the
prescribed curvature. Current version set all interior vertex curvature to be zeros, in practice, user can specify arbitrary target curvatures for them.
For example, user can concentrate all curvatures at a special vertex, or uniformly at all vertices. The target curvature can be dynamic
during the optimization also.
Input and output
The input is a mesh with general topology
- a mesh, e.g. face.nf50k.m
- User specify the target curvature. In the first example, the boundary curvature is 2PI/n, where n is the number of boundary
vertices. In the second example, four boundary vertices are selected, where the curvature is PI/2, the other vertices have zero
curvatures.
The output is
- The mesh with uv coordinates determined by the target flat metric, e.g.face.nf50k.uv.m
Command
For face mesh
YamabeFlow.exe face.nf50k.m face.nf50k.uv.m
Target Curvature
Target curvature can be set by the user, as long as the total target curvature is 2PI times Euler number of the mesh.
Convergence and Stability
The stability is mainly determined by the connectivity and the geometry of the mesh. In theory, if the target curvature
is outside the admissible curvature space of the mesh, then the program will terminate abnormally. In order to ensure
the target curvature to be admissible, the following hints are useful:
- The number of faces attaching to a vertex is called the vertex valence. The vertex valence should be greater than
2(2PI-K)/PI, where K is the target curvature.
- Special attention needs to be paid to boundary vertices. Remove all valence 1 boundary vertices.
Yamabe flow is capable of modifying connectivity during the optimization.
Example
The input face mesh has 50k faces. The computational time is about 10 seconds on a PC with 3.0 GB of RAM, 3.60 GHz CPU.
The data set can be downloaded. Please contact David Gu for the source code.