Building view transform matrices For a 3D scene in the world coordinates, its View Reference Point $\mathrm{VRP}$ is at $(5,-2,1)$, and a viewer is looking towards point $A=(1,1,1)$. Construct a transform matrix which will map world coordinate points to a right-handed $(UVN)$ viewing space, so that $\mathrm{VRP}$ is the origin, the line joining $\mathrm{VRP}$ to $A$ is the positive $N$ axis, and the view-up Vector is $(0,0,1)$.


To my knowledge, the final answer should be a single transform matrix.
To calculate the final matrix, I first find the matrix which translates the coordinate system to the to the origin in homogeneous matrix form:

Translation matrix:

$$
T=
        \begin{bmatrix}
        1 &amp;0 &amp;0 &amp;-5 \\
        0 &amp;1 &amp;0&amp; 2 \\
        0 &amp;0 &amp;1 &amp;-1 \\
        0 &amp;0 &amp;0 &amp;1 \\
        \end{bmatrix}
$$

Using the unit vectors of the coordinate axes, the resulting rotation matrix is:

$$
R=
        \begin{bmatrix}
        -0.6 &amp;-0.8 &amp;0 &amp;0 \\
        0 &amp;0 &amp;0 &amp;1 \\
        -0.8 &amp;0.6 &amp;0 &amp;0 \\
        0 &amp;0 &amp;0 &amp;1 \\
        \end{bmatrix}
$$
Then the final matrix (the final answer for full marks) would be the rotation matrix multiplied by the translation matrix:

$$
M=
        \begin{bmatrix}
        -0.6 &amp;-0.8 &amp;0 &amp;1.4 \\
        0 &amp;0 &amp;0 &amp;1 \\
        -0.8 &amp;0.6 &amp;0 &amp;5.2 \\
        0 &amp;0 &amp;0 &amp;1 \\
        \end{bmatrix}
$$
Is my method and final answer correct?



Following the answer to this question, I have calculated the translation matrix:

$$
T=
\begin{pmatrix}
1 &amp; 0 &amp; 0 &amp; -5 \\
0 &amp; 1 &amp; 0 &amp; 2 \\
0 &amp; 0 &amp; 1 &amp; -1 \\
0 &amp; 0 &amp; 0 &amp; 1 \\
\end{pmatrix}
$$

I have calculated the rotation matrix:

$$
R=
\begin{pmatrix}
-0.6 &amp; -0.8 &amp; 0 &amp; 0 \\
0 &amp; 0 &amp; 1 &amp; 0 \\
-0.8 &amp; 0.6 &amp; 0 &amp; 0 \\
0 &amp; 0 &amp; 0 &amp; 1 \\
\end{pmatrix}
$$

But what would the final transformation matrix $M$ be? My lecture slides tell me it would be rotation matrix multiplied by translation matrix, with the last column multiplied by $-1$ except for the $1$. This would equal:

$$
M = R \times T = 
\begin{pmatrix}
-0.6 &amp; -0.8 &amp; 0 &amp; -1.4 \\
0 &amp; 0 &amp; 1 &amp; 1 \\
-0.8 &amp; 0.6 &amp; 0 &amp; -5.2 \\
0 &amp; 0 &amp; 0 &amp; 1 \\
\end{pmatrix}
$$

But the answer here just adds them together somehow. Which one is correct?
To solve the problem, we will flow three steps, first, calculate translation matrix, second, calculate rotation matrix, third, get transformation matrix.

Because translation is a affine transformation, we need to use a 4x4 matrix to represent translation. I find you use column vector post-multiply matrix. the result of the translation matrix is same as yours.

Translation matrix = 

Then, same as your idea, we use basis vectors(same as unit vectors of the coordinate axes) to calculate rotation matrix.


basis z vector: we can get rotated basis z vector by using a vector from VRP to point A, and normalize it.

z = b(VRP) - a = [5,-2,1] - [1,1,1] = [4,-3,0] ,then, normalize to [0.8,-0.6,0]
basis x vector: we know basis vector is a vector perpendicular to z-up plane, we get the x vector by cross product up and z

x = up x z = [1,1,1] x [0.8 ,-0.6 ,0] = [0.6, 0.8, 0]
basis y vector, y is prependicular to z-x plane.

y = z x x = [0.8 ,-0.6, 0] x [0.6, 0.8, 0] = [0, 0, 1]

finally, the rotation matrix is:

Rotation Matrix = 
   

The 4x4 matrix is:

Transformation matrix = 

The transformation matrix is a matrix from Object Space to World Space, we should invert this matrix to get World Space to Camera Space matrix.(Thanks for @JarkkoL correcting me).

Refer to 3D Math Primer for Graphics and Game Developmen.




Following your request for clarification: I just combine the translation matrix and the rotation matrix, actually, It's the result translation matrix(T) multiply rotation matrix(R). 

The rotation is a 3x3 matrix, we can extend the matrix to a 4x4 matrix with adding a dimension, the 4x4 rotation matrix is:



And the translation matrix is:



So, now we can calculate the transform matrix by translation matrix multiply(T) rotation matrix(R):

Cause the matrix multiply formula is too big for the 4x4 matrix, we just look at the 1st row, In the transform matrix(M), the M11 element equals to T11*R11+T12*R21+T13*R31+T14*R41, cause T12, T13, R41 is 0, so, the M11 equals to R11 right? And in the same way, M14 equals to T11*R14+T12*R24+T13*R34+T14*R44, only R44 equals to 1, so, the M14 equals to T14. so, I just simply put them together in my last answer. For the reason why we put the translation matrix on the left, you can check on the book that I gave you in my previous answer on page 91(translating first and then rotating).