I posted this question in mathematics, but that sight gets flooded with homework problems... 8 views total, most of them me. Plus, I think this question is more geared to game development anyway.
I am making a 3D graphics processor using VB.Net.
I want to do an airplane game.
I want the plane(s) movements to be scalable by time, so that the appearance is the same regardless of how fast the game-loop is running. And so the amount of matrix & trig operations needed per frame is minimized.
Below is a 2D example of what I am trying to achieve.
I'm trying to do eigen-decomposition so a can scale transform A by time:
\$\begin{align} [A]_{t_0} =& [P][U][P^T]\\ [A]_t =& [P][U]^{(\frac{t}{t_0})}[P^T] \end{align}\$
- I figure out a complex movement (like turning left) using many small iteration steps at the start of the program.
- Solving for the largest eigen-vector & its value using the power iteration
- Other stuff to find the other eigen-vector(s) & values (still haven't nailed that down yet)
- Now, with this transform-decomposition for the turn-left operation for T seconds of game time, I can compute turn-left transforms for any time duration quickly and easily.
Ran into problems fast with a simple translation matrix that does not decompose. Then I saw this.
This guy apparently did it but did not show how. I know it's going to involve complex eigenvalues (if you got things rotating). I'm not sure how to handle those. And it is going to involve separating the translation part, which I also don't know how to do.
Here is 2 examples that I would like to see how to solve:
Simple X translation
\$
\begin{bmatrix}
1 & 0 & 0 & 30 \\
0 & 1 & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1
\end{bmatrix}
\$
Rotating and translating
\$
\begin{bmatrix}
-4.52E-07 & 0 & -1 & 19.1 \\
0 & 1 & 0 & 0 \\
1 & 0 & -4.52E-07 & 19.1 \\
0 & 0 & 0 & 1
\end{bmatrix}
\$
The whole point is to avoid doing hundreds of movement iterations at every game frame. The example shown has an easy solution for scaling by time, rotating around the arc center by x*dt. But, when I start doing combinations of 3D rotations like TURNING-UP while also TURNING-RIGHT while also ROLLING (cork-screwing in circle) it is going to be extremely time consuming figuring how to scale these movements by time.
I want the computer to do all the math.