Skip to content
Experiments with moebius transformations and non-euclidian perspectives.
HTML GLSL
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
blender
images
js
moebius
shaders
.gitmodules
CNAME
LICENSE
README.md
index.html

README.md

HYPERSPECTIVES

This is going to be a collection of my experiments related to moebius transformations and interesting mappings of 3d geometry. The goal is to offer unique perspectives on various aspects of what it means to be a creature living in living in space and to learn about math in the process.

Interactive demos


What's going on here?

The horse is inverse stereographically projected onto the hypersphere, rotated, and projected back again. Dragging the mouse moves the camera. Pressing the left & right arrow keys decrements and increments the rotation speed.

How does it work?

Daniel Piker’s blog posts give a great overview of this stuff.
Another big help is Moebius Transformations Revealed, which shows the 2 dimensional Moebius transformations.
It really gives an idea of what's going on in a more familiar space.
And of course Wikipedia articles: Stereographic projection, Möbius transformation, Isoclinic decomposition.

Vertex Shader

This GLSL code does the actual geometry work of the stereographic projection and 4 dimensional rotation. You can see that it takes two four-dimensional vectors as input. Those are the parameters for the isoclinic rotation matrices, which should each have determinants of 1 since they are rotations. So you have to be careful what you put in them! I usually generate these from a normalized quaternion representing the rotation of some dummy vector.

Fragment Shader

This basic one just shines red, green and blue lights along x, y and z respectively.

More Information

There's an amazing video series online called Dimensions Math, check it out as soon as possible.

You can’t perform that action at this time.