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.
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]])
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?

