# Transforming a 3D vector using matrix

by Gajan
Tags: matrix, transformation, vector
 Math Emeritus Sci Advisor Thanks PF Gold P: 39,488 Using a single 4x4 matrix to do both rotation and translation, you have to use a "projective" space. That means you are representing the point (x,y,z) as the (column) vector [x y z 1] with the provision that [a b c d] is the same as [a/d b/d c/d 1] (d can never be 0). In that case the matrix that rotates, say, $\theta$ degrees about the y-axis and translates by (tx,ty, tz) is $$\begin{bmatrix} cos(\theta) & 0 & -sin(\theta) & tx \\ 0 & 1 & 0 & ty \\ sin(\theta) & 0 & cos(\theta) & tz \\ 0 & 0 & 0 & 1\end{bmatrix}$$ Notice that in the particular case of $\theta= 0$ where there is no rotation and so a pure translation, this becomes $$\begin{bmatrix} 1 & 0 & 0 & tx \\ 0 & 1 & 0 & ty \\ 0 & 0 & 1 & tz \\ 0 & 0 & 0 & 1\end{bmatrix}\begin{bmatrix} x \\ y \\ z \\ 1\end{bmatrix}= \begin{bmatrix} x+ tx \\ y+ ty \\ z+ tz \\ 1\end{bmatrix}$$ While if tx= ty= tz= 0 so there is a pure rotation and no translation it is $$\begin{bmatrix} cos(\theta) & 0 & -sin(\theta) & 0 \\ 0 & 1 & 0 & 0 \\ sin(\theta) & 0 & cos(\theta) & 0 \\ 0 & 0 & 0 & 1\end{bmatrix}\begin{bmatrix} x \\ y \\ z \\ 1\end{bmatrix}= \begin{bmatrix} xcos(\theta)- zsin(\theta) \\ y \\ xsin(\theta)+ zcos(\theta)\end{bmatrix}$$ I would handle a general rotation as the product of two rotations around coordinate axes.