Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

How to use a 4x4 Matrix to translate a point in 3D space

  1. Dec 8, 2012 #1
    Hello, apologies in advance if my questions seem rather ignorant. I'm trying my best (and struggling) to understand the topic, but my background in math is weak, and i need the math for artistic purposes.

    I want to iteratively move and rotate a point in 3D space (move, rotate, move, rotate...) and from what I understand multiplication of 4x4 matrices lends itself to the task. The point has a direction it's pointing in (necessary for such motion); I take it that makes it a vector?

    Let's say the point's position (Cartesian coordinates) is [itex](2, 1.5, 3)[/itex]
    And the direction it points in is [itex](1, 0, 0)[/itex]
    From what I understand, I first create a matrix that represents the current state:

    0 & 0 & 0 & 2 \\
    0 & 0 & 0 & 1.5 \\
    0 & 0 & 0 & 3 \\
    0 & 0 & 0 & 1 \end{bmatrix}[/itex]
    Is this matrix ok (maybe missing 1's in the first 3 columns?) or have I fundamentally misunderstood something?

    Next I have to create a matrix that transforms the location and rotation of the point/vector. Through my online searches I found this:

    tx^2+c & txy-sz & txz+sy & X_{1} \\
    txy+sz & ty^2+c & tyz-sx & Y_{1} \\
    txz-sy & tyz-sx & tz^2+c & Z_{1} \\
    0 & 0 & 0 & 1 \end{bmatrix}[/itex]
    [itex]X_{1}, Y_{1}, Z_{1}[/itex] is the desired translation in Cartesian coordinates, e.g. [itex]0, 0, 3.75[/itex] to move 3.75 units along the system's z axis.
    [itex]x, y, z[/itex] are the unit vector ([itex]1, 0, 0[/itex] in my case)
    [itex]c = cosθ[/itex]
    [itex]s = sinθ[/itex]
    [itex]t = 1-cosθ[/itex]

    Is the angle [itex]θ[/itex] in degrees or radians, can you tell from looking at its usage?

    1. Once I have constructed Matrix2, do I multiply it by Matrix1 to derive a Matrix3 which contains the new position/direction of my point?

    2. How would i go about retrieving the new Cartesian coordinates (position and rotation) from Matrix3?

    3a. If Matrix2 contains my desired transformation, can i repeatedly multiply it with the result of a prior multiplication (M3'=M3xM2, M3=M3', M3'=M3xM2...) to achieve my original goal of iterative translation (most likely resulting in a circle or helix)?

    3b. If i had to feed Matrix2 a unit vector, wouldn't what comes in from Matrix3' during the next iteration be unsuitable?

    Again, sorry if i expose gaping holes in my comprehension. I hope my intentions make some sense.

    Last edited: Dec 8, 2012
  2. jcsd
  3. Dec 12, 2012 #2


    User Avatar
    Science Advisor

    This is an example of "projective geometry" in which we think of the set of all lines through the orgin in n-dimensional space as points in n-1 dimensional space.

    Specifically, a line through the origin can be written [itex]x_1= a_1t[/itex], [itex]x_2= a_2t[/itex], ..., [itex]x_n= a_nt[/itex] which we could represent as the vector equation [itex]<x_1, x_2, ..., x_n>= <a_1, a_2, ..., a_n>t[/itex]. If we take s= zt as parameter instead of t, t= s/z so that becomes [itex]<x_1, x_2, ..., x_n>= <a_1/a_n, a_2/a_n, ..., 1>z[/itex] which we can interpret as the point [itex](a_1/a_n, a_2/a_n, ..., a_{n-1}/a_n, 1)[/itex], in Rn-1, ignoring that last "1" but with the understanding that if any operation changes that last component, we immediately divide through by it to alway get 1.
    In that way, we can represent a point (a, b, c) as the column matrix [itex]\begin{bmatrix}a \\ b\\ c\\ 1\end{bmatrix}[/itex].

    Now, notice that the matrix multiplication
    [tex]\begin{bmatrix}1 & 0 & 0 & dx \\ 0 & 1 & 0 & dy \\ 0 & 0 & 1 & dz\\ 0 & 0 & 0 & 1\end{bmatrix}\begin{bmatrix}a \\ b \\ c \\ 1\end{bmatrix}= \begin{bmatrix}a+ dx \\ b+ dy\\ c+ dz \\ 1\end{bmatrix}[/tex]
    gives the column matrix corresponding to the point (a+ dx, b+ dy, c+ dz).

    If we were to replace the first three rows and columns by a "rotation matrix" we get both rotation and translation, giving all rigid motions in three dimensions, in a single matrix.
    Last edited by a moderator: Dec 14, 2012
  4. Dec 13, 2012 #3
    Thank you HallsOfIvy! This has helped clarify some things for me and i got the first results in the right direction. It seems that among other things, i was confused about column vs row-major notation as well.

    I saw that the homework & coursework section of this forum is also for "personal study" and thus probably better suited if i want extended assistance. I will prepare a new post there building on what i learned.
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook