  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.
