Euclid
Geometry Processing and Shape Analysis in C++
Ricci flow.

Conformal parameterization using discrete Ricci flow. More...

Classes

struct  Euclid::RicciFlowSolverSettings
 Ricci flow solver settings. More...
 
class  Euclid::Ricci_flow_parameterizer3< Mesh, SEM, SVM >
 Compute plane parameterization with Ricci flow. More...
 

Enumerations

enum  Euclid::RicciFlowSolverType { Euclid::RicciFlowSolverType::GradientDescent, Euclid::RicciFlowSolverType::Newton }
 Ricci flow solver types. More...
 
enum  RicciFlowSolverStatus { Optimal, Suboptimal, InvalidInput }
 

Functions

template<typename Mesh , typename VertexRadiusMap , typename EdgeWeightMap >
void Euclid::circle_packing_metric (Mesh &mesh, VertexRadiusMap vrm, EdgeWeightMap ewm)
 Compute the circle packing metric. More...
 
template<typename Mesh , typename VertexRadiusMap , typename EdgeWeightMap , typename SEM , typename SVM , typename VertexUVMap >
void Euclid::embed_circle_packing_metric (const Mesh &mesh, VertexRadiusMap vrm, EdgeWeightMap ewm, CGAL::Seam_mesh< Mesh, SEM, SVM > &seam_mesh, VertexUVMap uvm)
 Embed the circle packing metric into plane. More...
 
template<typename Mesh , typename VertexRadiusMap , typename EdgeWeightMap , typename VertexCurvatureMap >
RicciFlowSolverStatus Euclid::ricci_flow (Mesh &mesh, VertexRadiusMap vrm, EdgeWeightMap ewm, VertexCurvatureMap vcm, const RicciFlowSolverSettings &settings=RicciFlowSolverSettings())
 The discrete Ricci flow. More...
 

Detailed Description

Reference

[1] Jin, M., Kim, J., Luo, F., Gu, X. Discrete Surface Ricci Flow.

[2] Yang, YL., Guo, R., Luo, F., Hu, SM., Gu, X. Generalized Discrete Ricci Flow.

Enumeration Type Documentation

Enumerator
GradientDescent 

Gradient descent solver.

Newton 

Newton solver.

Function Documentation

template<typename Mesh , typename VertexRadiusMap , typename EdgeWeightMap >
void Euclid::circle_packing_metric ( Mesh &  mesh,
VertexRadiusMap  vrm,
EdgeWeightMap  ewm 
)

Inverse circle packing metric is used for better robustness.

Parameters
meshInput mesh.
vrmVertex radius property map.
ewmEdge weight property map.
template<typename Mesh , typename VertexRadiusMap , typename EdgeWeightMap , typename SEM , typename SVM , typename VertexUVMap >
void Euclid::embed_circle_packing_metric ( const Mesh &  mesh,
VertexRadiusMap  vrm,
EdgeWeightMap  ewm,
CGAL::Seam_mesh< Mesh, SEM, SVM > &  seam_mesh,
VertexUVMap  uvm 
)

The uv-coordinates are stored in the seam mesh.

Parameters
meshInput mesh.
vrmVertex radius property map.
ewmEdge weight property map.
seam_meshThe seam mesh.
uvmVertex uv-coordinate property map.
template<typename Mesh , typename VertexRadiusMap , typename EdgeWeightMap , typename VertexCurvatureMap >
RicciFlowSolverStatus Euclid::ricci_flow ( Mesh &  mesh,
VertexRadiusMap  vrm,
EdgeWeightMap  ewm,
VertexCurvatureMap  vcm,
const RicciFlowSolverSettings settings = RicciFlowSolverSettings() 
)

Optimize the given circle packing metric using Ricci flow.

Parameters
meshInput mesh.
vrmVertex radius property map.
ewmEdge weight property map.
vcmVertex target curvature map.
settingsSolver settings.