Non-euclidean virtual reality using ray marching Try out the simulation at The code is available at Joint work with Roice Nelson and Michael Woodard. This video demonstrates a virtual reality simulation of a non-euclidean, negatively curved space. Suppose that I walk in a straight line, then turn left by 90 degrees, and then repeat these steps until I get back to where I started. In a flat space with no curvature, I have just walked around a square. In a positively curved space, like the surface of a sphere, I could instead have walked around a right-angled triangle: I could start on the equator and walk a quarter the way around the sphere, then turn left and go up to the north pole, then turn left again and walk down to my starting point. In this video I am (virtually) in a negatively curved space; here I walk around a right-angled pentagon. The study of negatively curved spaces like this (more specifically, hyperbolic space) is an intense area of research in three-dimensional geometry and topology. This has grown from the seminal work of William Thurston, who showed that “most“ three-dimensional spaces are hyperbolic - the flat, euclidean spaces are the unusual ones! We created this simulation to make non-euclidean spaces more accessible to the general public: The simulation is available at and works in any web-browser - there is even a version for iOS and Android devices. In the future, we hope to implement simulations of other non-euclidean spaces, including some of the other geometries described by Thurston in his foundational “geometrization conjecture“, which was proved by Grigori Perelman in 2003. We also plan to integrate our visualization work into software used by other researchers, such as the program “SnapPy“, which is used to study hyperbolic manifolds. Our simulation is programmed using ray-marching, a graphics technique similar to ray-tracing. For each pixel of the screen, the program decides how to colour the pixel by tracing a ray of light from the pixel out into the world of the simulation and seeing which object it hits. As described in the video, an implementation of ray-marching requires very little knowledge about the space we are simulating, only: 1) A way to write down points in the space (i.e. a model for the space), 2) signed distance functions for the objects in the world, and 3) a way to move a given distance along a ray. This should help us generalise the technique to other, even weirder spaces. Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation.
Hide player controls
Hide resume playing