1
$\begingroup$

I have been working Euclidean Ricci Flow but have been having considerable trouble trying to implement the same discrete gradient descent functionality in hyperbolic space.

I am following the proposed algorithm at the end of "Computing Teichmuller Shape Space" but the algorithm fails very quickly due to the $\operatorname{acos}$ function's $[-1, +1]$ bounds.

If anyone could confirm that I am using the proper equations it would be very helpful.

Pre Processing (circle packing generation): $$ 1) compute vertex radius \gamma_i = \frac{l_{ij} + l_{ki} - l_{jk}}{2}$ where $l_{xy}$ is the euclidean distance between two points $$ 2) compute edge weight $\Phi_{ij}$ vai the hyperbolic cosine law $\cosh l_{ij} = \cosh \gamma_i \cosh \gamma_j + \sinh \gamma_i \sinh \gamma_j \cos\Phi_{ij}$ as such I am using: $\Phi_{ij} = \operatorname{acos}\frac{\cosh \gamma_i \cosh \gamma_j - \cosh l_{ij}}{-\sinh \gamma_i * \sinh \gamma_j}

Main Loop (gradient descent): $ 1) compute new edge length $l_{ij}$ using the inverse of the hyperbolic cosine law: $l_{ij} = \operatorname{arccosh}(\cosh \gamma_i \cosh \gamma_j + \sinh \gamma_i \sinh \gamma_j \cos\Phi_{ij})

2) compute the corner angles $\theta_i^{jk}$ of every face using the hyperbolic cosine law: \theta_i^{jk} = \operatorname{acos}\left(\frac{\cosh l_{ij} \cosh l_{ki} - \cosh l_{jk}}{\sinh l_{ij} \sinh l_{ki}}\right)$

3) compute the angle deficit at every vertex (easy)

4) update y_i$ based on the difference of target and current gaussian curvature (easy)

5) loop while max error > allowed error (easy)

0 Answers 0