- #1
STENDEC
- 21
- 0
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 & 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]
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 = 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.
Thanks!
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 & 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]
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 = 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.
Thanks!
Last edited: