Repeatedly applying a rotation matrix in 4-d space leads to cool shapes. What are they?

83 Views Asked by At

I asked a question here about applying a rotation matrix repeatedly to a unit vector and the shape this traces out. In 3-d space, this shape is a circle (for any rotation matrix).

I wanted to see what happens when I apply the same process to 4-d space. Start with some random point on the unit 4-sphere. Then, get a bunch of points by repeatedly applying the rotation matrix. What kind of curve do these points trace out? I was expecting either a circle or a sphere. Instead when I coded it up here, I got fascinating shapes. For instance, with the rotation matrix:

array([[ 0.99453664, -0.06742293, -0.05980238, -0.05267533],
   [ 0.06015838,  0.99409722, -0.06764144, -0.05980238],
   [ 0.06026834,  0.05993827,  0.99409722, -0.06742293],
   [ 0.0603785 ,  0.06026834,  0.06015838,  0.99453664]])

Applying this process leads to the shape below.

enter image description here

And for this rotation matrix:

array([[ 0.73135688, -0.65783315, -0.17987134,  0.00435448],
   [ 0.35220291,  0.58417312, -0.70876031, -0.17987134],
   [ 0.39091574,  0.27052209,  0.58417312, -0.65783315],
   [ 0.43388374,  0.39091574,  0.35220291,  0.73135688]])

enter image description here

What looks like a bunch of circles.

A bunch of other rotation matrices yield bangle like shapes like the first one.

I need help understanding what these shapes are.

Edit: it's clear the shapes are toroid. How do I determine the small amd large radii of the toroid? And how does this make sense when every point should be equidistant from the center of the original sphere?