Rendering Non-Euclidean Geometry in Real-Time Using Spherical and Hyperbolic Trigonometry
This paper introduces a method of calculating and rendering shapes in a non-Euclidean 2D space. In order to achieve this, we developed a physics and graphics engine that uses hyperbolic trigonometry to calculate and subsequently render the shapes in a 2D space of constant negative or positive curvature in real-time. We have chosen to use polar coordinates to record the parameters of the objects as well as an azimuthal equidistant projection to render the space onto the screen because of the multiple useful properties they have. For example, polar coordinate system works well with trigonometric calculations, due to the distance from the reference point (analogous to origin in Cartesian coordinates) being one of the coordinates by definition. Azimuthal equidistant projection is not a typical projection, used for neither spherical nor hyperbolic space, however one of the main features of our engine relies on it: changing the curvature of the world in real-time without stopping the execution of the application in order to re-calculate the world. This is due to the projection properties that work identically for both spherical and hyperbolic space, as can be seen in the Figure 1 above. We will also be looking at the complexity analysis of this method as well as renderings that the engine produces. Finally we will be discussing the limitations and possible applications of the created engine as well as potential improvements of the described method.
READ FULL TEXT