#Lobachevsky geometry (hyperbolic geometry)
From here on I'll just call it hyperbolic geometry for short.
The 2D space with hyperbolic geometry is denoted H2, and likewise the 3D one is H3. Ordinary Euclidean space is denoted by the letter E, for example: E, E2, E3, E4.
This is where I'll organize interesting material from our chat: https://t.me/metageometria (in Russian)
#Theorems and axioms of this geometry
Ordinary Euclidean geometry has 5 axioms from which everything else is derived. And among them is the fifth axiom:
In a plane, through a point not lying on a given line, one and only one line parallel to the given one can be drawn.
In hyperbolic geometry this axiom is negated:
Through a point not lying on a given line, there pass at least two lines that lie in the same plane as the given line and don't intersect it.
Once again: here parallel lines don't intersect! They intersect in spherical geometry.
It follows from this axiom that infinitely many lines pass through the given point without intersecting the given line. It's drawn like this:
png
There are also pictures that nicely show the main differences between all three known geometries:
png
png
#Books
The book L. S. Atanasyan, Lobachevsky Geometry (in Russian)
The book V. V. Prasolov, Lobachevsky Geometry (in Russian)
#Visualization
Think about it: how do we visualize Euclidean geometry? Very easily! We just take a 2D sheet of paper and draw on it, because our world is Euclidean! But with hyperbolic geometry it won't be that easy: for it you have to come up with special projections that bend straight lines into curves. Just like perspective projection changes distances and sizes of 3D objects.
#2Poincaré disk
png
#2Upper half-plane
png
A line is represented as a semicircle with its center on the line y=0. So to construct a line through two points, you need to construct a circle through these two points. Luckily, the constraint that the center lies on that line reduces the number of unknowns to two. Or else the line is a vertical ray.
Hyperbolic circles are projected as circles, but the coordinates of the center and the radius are calculated differently: (x, y cosh(r)), r = y sinh(r)
The conversion to the Poincaré disk is done with the Cayley transform
I even visualized this here and here (a slightly different transformation, to make it prettier).
#2Band model
png
#2Ray tracing
But to depict H3, you can use the same methods as for visualizing E3, for example perspective projection and ray tracing. Which is exactly what they did in the following video:
#2What if
What if we project H3 onto a piece of H2 with a perspective projection? Will straight lines be straight there? And in general, which projection of H3 onto H2 has the largest number of nice properties?
#Computations
Zeno Rogue recommends this paper for computations in hyperbolic space.
#2Where I started
gif
An article that explains very well how to simulate the Lobachevsky plane: Life on the Lobachevsky plane (in Russian). It has a lot of other interesting stuff too, for example, space wrapping around onto itself; I need to look into that.
With its help I drew my first tiling and GIFs of the interpolation between the upper half-plane model and the Poincaré disk.
#2Motion on the Poincaré disk
png
Animation of motion along the X axis.
And to move along an axis at an arbitrary angle, you just multiply these matrices like this:
if we denote the first matrix as M(x) and the second as R(φ), then we need to build the matrix
R(φ) * M(x) * R(-φ)
Animation of motion at 45 degrees.
#Tilings
You probably know that the ordinary two-dimensional space can be tiled with regular polygons:
png
In hyperbolic geometry there is much more freedom for this, because there a regular polygon can have almost any angle: the bigger the polygon, the smaller its angle.
This happens because the 5th axiom implies that triangles are congruent if their angles are equal. In ordinary geometry, on the other hand, triangles are similar if their angles are equal. It follows that in hyperbolic geometry there is no similarity, and the angles of a regular polygon uniquely determine its size.
Thanks to this, you can go wild with all kinds of tilings by changing the size of the shapes. For example, in this tiling the angle of the regular pentagons is 90 degrees:
jpg
A lecture about tilings of the hyperbolic plane:
#A game in hyperbolic geometry
#2Minecraft
I'd like to make Minecraft in H3, using the tiling of space with cubes {4, 3, 5}.
My first idea (in Russian) was to make the horizontal plane H2 and the vertical direction ordinary E, so that height works the way we're used to perceiving it, that is, the space H2×E. But then I realized that this looks very ugly: distant objects look squashed horizontally and very tall. This is what it looks like:
VR implementation of H^2 x E geometry
So I decided that it looks ugly, and I want to make Minecraft in H3 space. Gravity there will point perpendicular to the floor. I'll lay out the floor roughly like this (in Russian).
It can be rendered with ray tracing.
#2Memory limits
While in our familiar Euclidean world the area of a circle grows in proportion to the square of its size, in hyperbolic space everything is much worse:
According to this source, the area of a circle there grows as:
S = 4 pi sinh2(r/2).
For those who don't know, the hyperbolic sine is calculated like this:
sinh(x) = (ex - e-x)/2.
And this means that the area of a circle grows roughly in proportion to the square of an exponential, which is a lot.
If we want to store a Minecraft world as blocks, then already for a circle of radius 30 we'll have so many blocks inside that they won't fit into the memory of any personal computer. By the way, to get the same number of blocks in Euclidean Minecraft, we'd need a circle with a radius of 32 million blocks.
So in hyperbolic Minecraft we can't afford such a luxury as generating a world that you can modify. We'll have to settle for:
- either a flat world where the user can place a finite number of blocks;
- or an auto-generated world where nothing can be changed.
The game HyperRogue chose the second option, but it takes place on a 2D plane.
#2Compression
The circumference of a circle in hyperbolic space is also expressed in terms of the exponential:
L = 2 pi sinh(r)
And this means that at a distance of 20, about e20 blocks will fit, so we'll see the world in the distance as very compressed. And moving through such a world won't look like ordinary movement, but like zooming, because everything will grow in size very quickly.
#Curiosities
#2Discrete coordinates for tilings in hyperbolic geometry
These are three related articles:
What does it mean to introduce coordinate system on a regular tiling?
Coordinate system for heptagonal tiling of hyperbolic plane
Adjacent heptagons on hyperbolic plane
png
png
Something else about discrete coordinates, saved here so I don't lose it
#2Demos on the hyperbolic plane
png
png
png
Animation of objects moving in a square tiling:
png
#Memes
jpg
jpg
#Unsorted links
A cool presentation about mapping hyperbolic space onto different shapes.
An article with lots of examples of games and visualizations of hyperbolic space.
Changelog
2021.08.26
Moved this page to the new blog on Zola.
2020.11.16
Moved this page to submodules + jekyll.
2020.01.06
First publication.