Here is a "small" addition to the answer by @rschwieb:
Imagine you have the following rotation matrix:
$$
\left[
\begin{array}{ccc}
1 & 0 & 0\\
0 & 1 & 0\\
0 & 0 & 1
\end{array}
\right]
$$
At first one might think this is just another identity matrix. Well, yes and no. This matrix can represent a rotation around all three axes in 3D Euclidean space with...zero degrees. This means that no rotation has taken place around any of the axes.
As we know $\cos(0) = 1$ and $\sin(0) = 0$.
Each column of a rotation matrix represents one of the axes of the space it is applied in so if we have 2D space the default rotation matrix (that is - no rotation has happened) is
$$
\left[
\begin{array}{cc}
1 & 0\\
0 & 1
\end{array}
\right]
$$
Each column in a rotation matrix represents the state of the respective axis so we have here the following:
$$
\left[
\begin{array}{c|c}
1 & 0\\
0 & 1
\end{array}
\right]
$$
First column represents the x axis and the second one - the y axis. For the 3D case we have:
$$
\left[
\begin{array}{c|c|c}
1 & 0 & 0\\
0 & 1 & 0\\
0 & 0 & 1
\end{array}
\right]
$$
Here we are using the canonical base for each space that is we are using the unit vectors to represent each of the 2 or 3 axes.
Usually I am a fan of explaining such things in 2D however in 3D it is much easier to see what is happening. Whenever we want to rotate around an axis, we are basically saying "The axis we are rotating around is the anchor and will NOT change. The other two axes however will".
If we start with the "no rotation has taken place" state
$$
\left[
\begin{array}{c|c|c}
1 & 0 & 0\\
0 & 1 & 0\\
0 & 0 & 1
\end{array}
\right]
$$
and want to rotate around - let's say - the x axis we will do
$$
\left[
\begin{array}{c|c|c}
1 & 0 & 0\\
0 & \cos(\theta) & -\sin(\theta)\\
0 & \sin(\theta) & \cos(\theta)
\end{array}
\right] .
\left[
\begin{array}{c|c|c}
1 & 0 & 0\\
0 & 1 & 0\\
0 & 0 & 1
\end{array}
\right] =
\left[
\begin{array}{c|c|c}
1 & 0 & 0\\
0 & \cos(\theta) & -\sin(\theta)\\
0 & \sin(\theta) & \cos(\theta)
\end{array}
\right]
$$
What this means is:
- The state of the x axis remains unchanged - we've started with a state of no rotation so the x axis will retain its original state - the unit vector $\left[\begin{array}{c}1\\0\\0\end{array}\right]$
- The state of the y and z axis has changed - instead of the original $\left[\begin{array}{c}0\\1\\0\end{array}\right]$ (for y) and $\left[\begin{array}{c}0\\0\\1\end{array}\right]$ (for z) we now have $\left[\begin{array}{c}0\\\cos(\theta)\\\sin(\theta)\end{array}\right]$ (for the new orientation of y) and $\left[\begin{array}{c}0\\-\sin(\theta)\\\cos(\theta)\end{array}\right]$ (for the new orientation of z).
We can continue applying rotations around this and that axis and each time this will happen - the axis we are rotating around remains as it was in the previous step and the rest of the axes change accordingly.
Now when it comes to 2D we have
$$
R(\theta) = \left[
\begin{array}{c|c}
\cos(\theta) & -\sin(\theta)\\
\sin(\theta) & \cos(\theta)
\end{array}
\right]
$$
for counterclockwise rotation and
$$
R(-\theta) = \left[
\begin{array}{c|c}
\cos(\theta) & \sin(\theta)\\
-\sin(\theta) & \cos(\theta)
\end{array}
\right]
$$
for clockwise rotation. Notice that both column vectors are different. This is because in 2D none of the two axes remains idle and both need to change in order to create a rotation. This is why also the 3D version has two of the three axes change simultaneously - because it is just a derivative from its 2D version.
When it comes to rotating clock- or counterclockwise you can always use the left or right hand rule:
- Use your right or left hand to determine the axes:
- See which way is clock- and which way is counterclockwise. In the image below the four finger tips that go straight into your palm always point along the direction of rotation (right hand rule):
Once you pick one of the two hands stick with it and use it until the end of the specific task otherwise the results will probably end up screwed up. Notice also that this rule can also be applied to 2D. Just remove (but not cut off) the finger that points along the z axis (or whichever dimension of the three you don't need) and do your thing.
A couple of must knows things:
Matrix multiplication is generally not commutative - what this means is that $A.B \ne B.A$
Rotation order is determined by the multiplication order (due to 1)) - there are a LOT of rotation conventions (RPY (roll,pitch and yaw), Euler angles etc.) so it is important to know which one you are using. If you are not certain pick one and stick with it (better have one consistent error than 10 different errors that you cannot follow up on) (see here for some compact information on this topic)
Inverse of a rotation matrix rotates in the opposite direction - if for example $R_{x,90}$ is a rotation around the x axis with +90 degrees the inverse will do $R_{x,-90}$. On top of that rotation matrices are awesome because $A^{-1} = A^t$ that is the inverse is the same as the transpose
Given an oriented 2D subspace $\mathsf{\Pi}$ of a real inner product space $V$ and any angle $\theta$, there exists a rotation $R(\mathsf{\Pi},\theta)$ which acts as a rotation by $\theta$ when restricted to $\mathsf{\Pi}$ and acts as the identity map when restricted to the orthogonal complement $\mathsf{\Pi}^\perp$. Since $V=\mathsf{\Pi}\oplus\mathsf{\Pi}^\perp$ is a(n orthogonal) direct sum, every vector is (uniquely) expressible as sum of a vector in $\mathsf{\Pi}$ and a vector in $\mathsf{\Pi}^\perp$, and using linearity this definition allows us to apply $R(\mathsf{\Pi},\theta)$ to any vector. Picking any two orthogonal unit vectors within $\mathsf{\Pi}$ compatible with the orientation and conjoining that with any basis for $\mathsf{\Pi}^\perp$ yields a basis for $V$ with respect to which $R(\mathsf{\Pi},\theta)$ is block diagonal, with the usual $2\times 2$ rotation matrix as one block and the identity matrix of the appropriate dimensions as the other block.
These are called plane rotations. In 3D we usually think of rotations as happening around a rotation axis, however this kind of thinking doesn't generalize to higher dimensions whereas the plane of rotation idea does generalize. Indeed, any rotation $R\in\mathrm{SO}(V)$ is expressible as
$$R=\prod_i R(\mathsf{\Pi}_i,\theta_i) $$
for some oriented, two-dimensional, mutually orthogonal subspaces $\mathsf{\Pi}_1,\cdots,\mathsf{\Pi}_\ell$ and angles $\theta_1,\cdots,\theta_\ell$. (Obviously $\ell\le(\dim V)/2$.) As the $\mathsf{\Pi}$s are orthogonal to each other, the factors in the above product all commute, which is why no order needs to be specified in the product.
Are the set of planes $\{\mathsf{\Pi}_1,\cdots,\mathsf{\Pi}_\ell\}$ an invariant of $R$ or not? Not necessarily. For instance, consider multiplication by $i$ on $\mathbb{C}^2$. Any complex one-dimensional subspace of $\mathbb{C}^2$ (there are a $\mathbb{CP}^1$ worth of them) is a real two-dimensional stable subspace. However, it turns out of the angles $\theta_1,\cdots,\theta_\ell$ are all distinct mod $2\pi$ up to sign, then $\{\mathsf{\Pi}_1,\cdots,\mathsf{\Pi}_\ell\}$ is an invariant.
Indeed, notice that $R^{-1}$ acts the same way but with opposite angles. With a simple picture we can see that $R+R^{-1}$ acts as the scalar $2\cos(\theta_i)$ on $\mathsf{\Pi}_i$. Therefore, $\mathsf{\Pi}_i$ is precisely the $2\cos(\theta_i)$-eigenspace of $R+R^{-1}$. This may not be computationally practical, perhaps more useful for finding the $\theta$-associated stable subspace would be finding the span of the $e^{i\theta}$ and $e^{-i\theta}$ eigenspaces of the complexification $V\otimes_{\mathbb{R}}\mathbb{C}$ and intersecting with $V$. (I don't really think about linear algebra from the practical side though, so this may be unhelpful.)
Best Answer
Since $\mathbf R$ is an orthogonal matrix, the map $v\mapsto \mathbf R.v$ preserves the scalar product; in particular, it prserves the norm. So, if $u,v\in\mathbb R^3$,$$\frac{\langle u,v\rangle}{\lVert u\rVert.\lVert v\rVert}=\frac{\langle\mathbf R.u,\mathbf R.v\rangle}{\lVert\mathbf R.u\rVert.\lVert\mathbf R.v\rVert}.$$That is, the angles are preserved.