hi ho ihr da draußen,
ich habe da ein verständnisproblem...
und zwar ist das ein ausschnitt aus einem tutorial und die funktion ist für die rotation der sicht aus der 1st persion view zuständig:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
CVector3 vNewView;
CVector3 vView = m_vView - m_vPosition;
float Cos = (float)cos(Angle);
float Sin = (float)sin(Angle);
vNewView.x = (Cos + (1 - Cos) * x * x) * vView.x;
vNewView.x += ((1 - Cos) * x * y - z * Sin) * vView.y;
vNewView.x += ((1 - Cos) * x * z + y * Sin) * vView.z;
vNewView.y = ((1 - Cos) * x * y + z * Sin) * vView.x;
vNewView.y += (Cos + (1 - Cos) * y * y) * vView.y;
vNewView.y += ((1 - Cos) * y * z - x * Sin) * vView.z;
vNewView.z = ((1 - Cos) * x * z - y * Sin) * vView.x;
vNewView.z += ((1 - Cos) * y * z - x * Sin) * vView.y;
vNewView.z += (Cos + (1 - Cos) * z * z) * vView.z;
|
wie david uns das schön beibebracht hat muss man dazu ja erst rotieren und dann transformieren. allerdings hab ich keine ahnung wie die berechnung da zustande kommt denn wenn ich mir die rotationsmatrizen für die achsen anschaue kommt da was ganz anderes raus ???