Um das nochmal hoch zu kochen: Ich versuche in einer 3 Dimensionalen Kugel zu rotieren(an den Rändern). Das müsste dann ja eigentlich mit 2 Winkeln und dem Radius funktionieren:
§
x = r \cdot \sin \theta \cdot \cos \varphi§
§y = r \cdot \sin \theta \cdot \sin \varphi §
§z = r \cdot \cos \theta
§
Mein Code dazu:
|
C-/C++-Quelltext
|
1
2
|
Vector3 vCirc = Vector3( (sinf(DEG_TO_RAD(t)) * cosf(DEG_TO_RAD(tt)) * fDis) + vCenter.x, (sinf(DEG_TO_RAD(t)) * sinf(DEG_TO_RAD(tt)) * fDis) + vCenter.y, cosf(DEG_TO_RAD(t)) * fDis + vCenter.z);
m_vCameraPos = vCirc;
|
t und tt sind die Winkel. vCenter der Mittelpunkt der Kugel und fDis der Radius.
Wie man sich denken kann funktioniert es nicht. Wen ich nach "oben" will (tt), dann geht die Kamera nicht in einer Kreisbahn nach oben sondern einfach nur nach Oben. Wenn ich dann nach links oder rechts will verhält sich alles ganz komisch. Ich fliege dann Diagonal auf einer Fläche kann man sagen. Was habe ich verbockt?