Rotation Matrix of rotation around a point other than the origin

In homogeneous coordinates, a rotation matrix around the origin can be described as

$$R = \begin{bmatrix}\cos(\theta) & -\sin(\theta) & 0\\\sin(\theta) & \cos(\theta) & 0 \\ 0&0&1\end{bmatrix}$$

with the angle $$\theta$$ and the rotation being counter-clockwise.

A translation amongst $$x$$ and $$y$$ can be defined as:

$$T(x,y) = \begin{bmatrix}1&0&x\\ 0& 1&y\\0&0&1\end{bmatrix}$$

As I understand, the rotation matrix around an arbitrary point, can be expressed as moving the rotation point to the origin, rotating around the origin and moving back to the original position. The formula of this operations can be described in a simple multiplication of

$$T(x,y) * R * T(-x,-y) \qquad (I)$$

I find this to be counter-intuitive. In my understanding, it should be

$$T(-x,-y) * R * T(x,y) \qquad (II)$$

The two formulations are definitely not equal. The first equation yields

$$E1 = \begin{bmatrix}\cos(\theta) & -\sin(\theta) & -x\cdot\cos(\theta)+y\cdot\sin(\theta)+x\\\sin(\theta) & \cos(\theta) & -x\cdot\sin(\theta)-y\cdot\cos(\theta)+y \\ 0&0&1\end{bmatrix}$$

The second one:

$$E2 = \begin{bmatrix}\cos(\theta) & -\sin(\theta) & x\cdot\cos(\theta)-y\cdot\sin(\theta)-x\\\sin(\theta) & \cos(\theta) & x\cdot\sin(\theta)+y\cdot\cos(\theta)-y \\ 0&0&1\end{bmatrix}$$

So, which one is correct?

Your first formula is correct. Remember, the point to which this is applied appears on the RIGHT: $$T(x,y) * R * T(-x,-y) (P)$$ So to evaluate the expression above, we first translate $P$ by $(-x, -y)$, then rotate the result, then translate back. Let's see what happens when $P$ is the point $(x, y, 1)$. That amounts to evaluating the following product: \begin{align} f((x, y)) &= \begin{bmatrix}1&0&x\\ 0& 1&y\\0&0&1\end{bmatrix} \begin{bmatrix}\cos(\theta) & -\sin(\theta) & 0\\\sin(\theta) & \cos(\theta) & 0 \\ 0&0&1\end{bmatrix} \begin{bmatrix}1&0&-x\\ 0& 1&-y\\0&0&1\end{bmatrix} \begin{bmatrix}x\\ y\\1\end{bmatrix}\\ &= \begin{bmatrix}1&0&x\\ 0& 1&y\\0&0&1\end{bmatrix} \begin{bmatrix}\cos(\theta) & -\sin(\theta) & 0\\\sin(\theta) & \cos(\theta) & 0 \\ 0&0&1\end{bmatrix} \begin{bmatrix}0\\ 0\\1\end{bmatrix}\\ &= \begin{bmatrix}1&0&x\\ 0& 1&y\\0&0&1\end{bmatrix} \begin{bmatrix}0\\ 0\\1\end{bmatrix}\\ &= \begin{bmatrix}x\\ y\\1\end{bmatrix}\\ \end{align} as expected: the point $(x, y)$ remains fixed by this composite transformation.
• If you flipped the translate order, you'd find yourself rotation by the angle $\theta$ around the point $(-x, -y)$ instead of $(x, y)$. – John Hughes Jan 17 at 11:40