Register to reply 
How to use a 4x4 Matrix to translate a point in 3D space 
Share this thread: 
#1
Dec812, 06:04 PM

P: 14

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: [itex]Matrix1= \begin{bmatrix} 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: [itex]Matrix2= \begin{bmatrix} tx^2+c & txysz & txz+sy & X_{1} \\ txy+sz & ty^2+c & tyzsx & Y_{1} \\ txzsy & tyzsx & tz^2+c & Z_{1} \\ 0 & 0 & 0 & 1 \end{bmatrix}[/itex] Where: [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 = 1cosθ[/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. Thanks! 


#2
Dec1212, 08:46 AM

Math
Emeritus
Sci Advisor
Thanks
PF Gold
P: 39,693

This is an example of "projective geometry" in which we think of the set of all lines through the orgin in ndimensional space as points in n1 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_{n1}/a_n, 1)[/itex], in R^{n1}, 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. 


#3
Dec1312, 04:19 PM

P: 14

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 rowmajor 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. 


Register to reply 
Related Discussions  
Matrix Multiplication to translate object with given vertices  Linear & Abstract Algebra  4  
Relationship between column space of a matrix and rref of matrix  Linear & Abstract Algebra  7  
Translate one state space representation into an other?  Engineering, Comp Sci, & Technology Homework  0  
Orthogonality, point on line closest to point in space  Calculus & Beyond Homework  3 