Why don't we generalize rotation by rotating parallel to a plane instead of around a point or line?

69 Views Asked by At

When we learn about rotation, we are thought that in 2D you can rotate objects around a point and in 3D you can rotate things around a line. If we generalize this, then rotating an object in a $n$-D space means rotating around an $(n-2)$-D plane.

I find this way of rotating quite annoying for a couple of reasons:

  • The complexity of the plane you rotate around grows with $O(n^2)$.
  • It gives no clear indication what direction you want to rotate.
  • The plane you rotate around only gives a set of points that do not get affected by the rotation. This does not seem to me as an intuitive way of describing a rotation.
  • Annoying to generalize for higher dimensions than 3.
  • Difficult to define elliptic rotations with.

My choice of rotation would be simply picking two vectors, which make a 2D plane with the origin. One of the vectors could be called $v_1$, which is the starting vector and the other vector $v_2$, which is the ending vector. Points inside the plane rotate by just rotating the whole plane, until points aligning with vector $v_1$, align with vector $v_2$. Points outside the plane would rotate parallel to it, which means that they rotate along their projection on the plane.

Another way to imagine it, is by using a clock. If you see a clock floating somewhere in space, then you can see three things in particular. The two hands and the point they both originate from. By knowing just those three things, you know how the hands will rotate, regardless of the amount of dimensions. Of course a vector representing a hand of the clock would have complexity $O(n)$.

A couple of years ago, I made the formula below. I don't remember all the details of the formula, but if $v_1$ and $v_2$ are perpendicular to each other and both are of unit length, then $v_0$ gets rotated $\theta$ degrees parallel to the rotation from $v_1$ to $v_2$.

$ s_{11} := v_1 \cdot v_1\\ s_{12} := v_1 \cdot v_2\\ s_{22} := v_2 \cdot v_2\\ s_{01} := v_0 \cdot v_1\\ s_{02} := v_0 \cdot v_2\\ d := (s_{11} \cdot s_{22} - s_{12} \cdot s_{12})\\ p_a := (s_{01} \cdot s_{22} - s_{02} \cdot s_{12}) / d\\ p_b := (s_{02} \cdot s_{11} - s_{01} \cdot s_{12}) / d\\ p := v_1 \cdot p_a + v_2 \cdot p_b\\ c := cos(\theta)\\ s := sin(\theta)\\ q_a = p_a \cdot c - p_b \cdot s\\ q_b = p_b \cdot c + p_a \cdot s\\ q := v_1 \cdot q_a + v_2 \cdot q_b\\ v_0 := q + v_0 - p\\ $