Suppose I have an angle e.g. 180 degrees, and I know that an image scales to 1.5 of its size, how do I map these to a 2D transformation matrix? Thanks!
Create transformation matrix from scale and angle.
-
0You are repeating yourself: http://math.stackexchange.com/q/107819/19341 – 2012-02-10
1 Answers
A rotation matrix (which rotates a vector an angle $\theta$ in the plane) is given by R = \begin{bmatrix} \cos \theta & -\sin\theta \\ \sin \theta & \cos \theta \end{bmatrix} (see http://en.wikipedia.org/wiki/Rotation_matrix). To scale by a factor $\alpha$ (i.e. multiply both components of a vector by $\alpha$), apply the transformation $ S = \alpha I = \begin{bmatrix} \alpha & 0 \\ 0 & \alpha \end{bmatrix} $ The desired matrix is obtained by multiplying these together, i.e. $ A = RS $ (or, equivalently, $A = SR$, since $S$ commutes with every other matrix); the result is easily seen to be A = SR = RS = \begin{bmatrix} \alpha \cos \theta & -\alpha \sin \theta \\ \alpha \sin \theta & \alpha \cos \theta \end{bmatrix} If you want to scale by a factor $\alpha$ in the $x$-direction and a factor $\beta$ in the $y$-direction, you would use S' = \begin{bmatrix} \alpha & 0 \\ 0 & \beta \end{bmatrix} instead, and multiply as before, but now the order matters (in general, you have $R S' \neq S'R$).