Abstract
We present novel methods for real-time native geodesic rendering of anisotropic geometries and similar geometries, Nil, twisted
. We also include partial results for the Berger sphere and explain why such real-time rendering of this geometry is difficult. Current approaches are not applicable for rendering complex shapes in these geometries, such as traditional 3D models, because of the computational complexity of ray-based approaches or significant rendering artifacts in older primitive-based approaches. We use tessellations to represent large shapes without numerical precision issues. Our efficient methods for computing the inverse exponential mapping are applicable not only for visualization but for games, physics simulations, and machine learning purposes as well.
Acknowledgments
We want to thank the HyperRogue community, particularly Kaida Tong and MagmaMcFry, for sparking our interest in the Solv geometry and fruitful discussions. We are also thankful to the organizers of the ICERM Illustrating Geometry and Topology Workshop, partially funded by the Alfred P. Sloan Foundation award G-2019-11406 and supported by a Simons Foundation Targeted Grant to Institutes for inviting us; this workshop has been a big inspiration for our work. Special thanks to Jeff Weeks for taking time to read and comment on the draft version. His valuable suggestions enriched our paper. We would also like to thank Craig Hodgson for discussions. Eventually, we are grateful to the anonymous reviewers for their insightful remarks that led to a significant improvement of the paper.
Funding
This work has been supported by the National Science Centre, Poland, grant UMO-2019/35/B/ST6/04456.
narodowe centrum nauki;
Notes
1 In [Citation15] fast algorithms for computing the exponential map are shown. Also it is mentioned that the result in [Citation6] is incomplete and contains errors.
2 Technically, the coordinate values for which the sampler returns the actual values from the texture are odd multiples of , rather than multiples of
. Using
makes our mathematical exposition clearer. The programmer will have to take this into account by mapping
to
.