Take the 2-minute tour ×
Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

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)

share|improve this question
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.