Vector cam_forward[b][color=#663300] =[/color][/b][color=#3333FF] new[/color] Vector[b][color=#663300]();[/color][/b]
Vector cam_right[b][color=#663300] =[/color][/b][color=#3333FF] new[/color] Vector[b][color=#663300]();[/color][/b]
Vector cam_up[b][color=#663300] =[/color][/b][color=#3333FF] new[/color] Vector[b][color=#663300]([/color][/b][color=#999900]0[/color][b][color=#663300],[/color][/b][color=#999900]1[/color][b][color=#663300],[/color][/b][color=#999900]0[/color][b][color=#663300]);[/color][/b]
Vector look_at[b][color=#663300] =[/color][/b][color=#3333FF] new[/color] Vector[b][color=#663300](-[/color][/b][color=#999900]1[/color][b][color=#663300],[/color][/b][color=#999900] 0[/color][b][color=#663300],[/color][/b][color=#999900] 0[/color][b][color=#663300]);[/color][/b]
Vector position[b][color=#663300] =[/color][/b][color=#3333FF] new[/color] Vector[b][color=#663300]([/color][/b][color=#999900]3[/color][b][color=#663300],[/color][/b][color=#999900] 2[/color][b][color=#663300],[/color][/b][color=#999900] 0[/color][b][color=#663300]);[/color][/b]
Vector myObject[b][color=#663300] =[/color][/b][color=#3333FF] new[/color] Vector[b][color=#663300]([/color][/b][color=#999900]1[/color][b][color=#663300],[/color][/b][color=#999900] 2[/color][b][color=#663300],[/color][/b][color=#999900] 0[/color][b][color=#663300]);[/color][/b]
cam_forward[b][color=#663300] =[/color][/b] look_at[b][color=#663300].[/color][/b]Normalise[b][color=#663300]();[/color][/b]
cam_right[b][color=#663300] =[/color][/b] cam_forward[b][color=#663300].[/color][/b]CrossProd[b][color=#663300]([/color][/b]cam_up[b][color=#663300]).[/color][/b]Normalise[b][color=#663300]();[/color][/b]
cam_up[b][color=#663300] =[/color][/b] cam_right[b][color=#663300].[/color][/b]CrossProd[b][color=#663300]([/color][/b]cam_forward[b][color=#663300]);[/color][/b]
Matrix view[b][color=#663300] =[/color][/b][color=#3333FF] new[/color] Matrix[b][color=#663300]([/color][/b][color=#999900]4[/color][b][color=#663300]);[/color][/b]
view[b][color=#663300][[/color][/b][color=#999900]0[/color][b][color=#663300],[/color][/b][color=#999900]0[/color][b][color=#663300]] =[/color][/b] cam_right[b][color=#663300].[/color][/b]X[b][color=#663300];[/color][/b]
view[b][color=#663300][[/color][/b][color=#999900]0[/color][b][color=#663300],[/color][/b][color=#999900]1[/color][b][color=#663300]] =[/color][/b] cam_right[b][color=#663300].[/color][/b]Y[b][color=#663300];[/color][/b]
view[b][color=#663300][[/color][/b][color=#999900]0[/color][b][color=#663300],[/color][/b][color=#999900]2[/color][b][color=#663300]] =[/color][/b] cam_right[b][color=#663300].[/color][/b]Z[b][color=#663300];[/color][/b]
view[b][color=#663300][[/color][/b][color=#999900]1[/color][b][color=#663300],[/color][/b][color=#999900]0[/color][b][color=#663300]] =[/color][/b] cam_up[b][color=#663300].[/color][/b]X[b][color=#663300];[/color][/b]
view[b][color=#663300][[/color][/b][color=#999900]1[/color][b][color=#663300],[/color][/b][color=#999900]1[/color][b][color=#663300]] =[/color][/b] cam_up[b][color=#663300].[/color][/b]Y[b][color=#663300];[/color][/b]
view[b][color=#663300][[/color][/b][color=#999900]1[/color][b][color=#663300],[/color][/b][color=#999900]2[/color][b][color=#663300]] =[/color][/b] cam_up[b][color=#663300].[/color][/b]Z[b][color=#663300];[/color][/b]
view[b][color=#663300][[/color][/b][color=#999900]2[/color][b][color=#663300],[/color][/b][color=#999900]0[/color][b][color=#663300]] =[/color][/b] cam_forward[b][color=#663300].[/color][/b]X[b][color=#663300];[/color][/b]
view[b][color=#663300][[/color][/b][color=#999900]2[/color][b][color=#663300],[/color][/b][color=#999900]1[/color][b][color=#663300]] =[/color][/b] cam_forward[b][color=#663300].[/color][/b]Y[b][color=#663300];[/color][/b]
view[b][color=#663300][[/color][/b][color=#999900]2[/color][b][color=#663300],[/color][/b][color=#999900]2[/color][b][color=#663300]] =[/color][/b] cam_forward[b][color=#663300].[/color][/b]Z[b][color=#663300];[/color][/b]
view[b][color=#663300][[/color][/b][color=#999900]3[/color][b][color=#663300],[/color][/b][color=#999900]0[/color][b][color=#663300]] =[/color][/b][color=#999900] 0[/color][b][color=#663300];[/color][/b]
view[b][color=#663300][[/color][/b][color=#999900]3[/color][b][color=#663300],[/color][/b][color=#999900]1[/color][b][color=#663300]] =[/color][/b][color=#999900] 0[/color][b][color=#663300];[/color][/b]
view[b][color=#663300][[/color][/b][color=#999900]3[/color][b][color=#663300],[/color][/b][color=#999900]2[/color][b][color=#663300]] =[/color][/b][color=#999900] 0[/color][b][color=#663300];[/color][/b]
view[b][color=#663300][[/color][/b][color=#999900]3[/color][b][color=#663300],[/color][/b][color=#999900]3[/color][b][color=#663300]] =[/color][/b][color=#999900] 1[/color][b][color=#663300];[/color][/b]
view[b][color=#663300][[/color][/b][color=#999900]0[/color][b][color=#663300],[/color][/b][color=#999900]3[/color][b][color=#663300]] =[/color][/b] cam_right[b][color=#663300].[/color][/b]DotProd[b][color=#663300](-[/color][/b]position[b][color=#663300]);[/color][/b]
view[b][color=#663300][[/color][/b][color=#999900]0[/color][b][color=#663300],[/color][/b][color=#999900]3[/color][b][color=#663300]] =[/color][/b] cam_up[b][color=#663300].[/color][/b]DotProd[b][color=#663300](-[/color][/b]position[b][color=#663300]);[/color][/b]
view[b][color=#663300][[/color][/b][color=#999900]0[/color][b][color=#663300],[/color][/b][color=#999900]3[/color][b][color=#663300]] =[/color][/b] cam_forward[b][color=#663300].[/color][/b]DotProd[b][color=#663300](-[/color][/b]position[b][color=#663300]);[/color][/b]
Vector test[b][color=#663300] =[/color][/b] view[b][color=#663300] *[/color][/b] myObject[b][color=#663300];[/color][/b]
test[b][color=#663300].[/color][/b]Print[b][color=#663300]();[/color][/b]