Hallo,
ich wollte mal eine Funktion einbauen, die die Ausrichtung eines Objektes, basierend auf der Tribase Engine tbObject Klasse, zeichnet. Die Ausrichtung sieht dann so aus, dass einfach die 3 Achsen als Linien gezeichnet werden, ausgehend vom Objektmittelpunkt und dann in Richtung der jeweiligen Achsen.
Die Achsen sind ja m_vXAxis, m_vYAxis und m_vZAxis, mein Code zum zeichnen der Linien sieht so aus:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
SVertex v[6];
// X-Achse
v[0].vPos = tbVector3(0.0f, 0.0f, 0.0f);
v[1].vPos = m_vXAxis;
// Y-Achse
v[2].vPos = tbVector3(0.0f, 0.0f, 0.0f);
v[3].vPos = m_vYAxis;
// Z-Achse
v[4].vPos = tbVector3(0.0f, 0.0f, 0.0f);
v[5].vPos = m_vZAxis;
// Renderstates setzen für Wireframe...
// Transfprmation für World setzen...
pD3DDevice->getDevice()->DrawPrimitiveUP(D3DPT_LINELIST, 3, v, sizeof(SVertex));
|
In einer anderen Funktion habe ich noch geschrieben, dass statt einem Model einfach ein einfacher Würfel angezeigt wird. Jetzt zum Problem:
Lasse ich das Objekt um die Z Achse drehen (z.B. 45 Grad pro Sekunde), so dreht sich der Würfel und natürlich auch, sowie auch alle 3 Linien, die die Achsen angeben. Das komische ist nur, dass sich die Linien genau doppelt so schnell drehen, wie der Würfel - wie kann denn das nur sein?
Sollte es nicht so sein, dass der Würfel gedreht wird, indem quasi der Normalvektor X als X-Ausrichtung genommen wird (Es wird ja eine Achsen-Rotationsmatrix in tbObject verwendet), so müsste doch die Linie, die in der Position "m_vXAxis" endet, genau in die Richtung zeigen, in die auch der Würfel rotiert wird?
Ich sehe den Zusammenhang einfach nicht, warum drehen sich die Linien genau doppel so schnell, wie der Würfel?
Ich nehme an, dass der Fehler beim Zeichnen der Linien zu finden ist, deswegen habe ich den Code oben gepostet. Falls Ihr das Zeichnen des Würfels auch noch sehen wollt, poste ich es natürlich gerne.
Und sollte ich das Problem nicht gut beschrieben haben, so poste ich auch gerne noch nen Screenshot.
Vielen Dank für Eure Hilfe!