SetTransform - Rotation und Translation trennen
-
Hello together,
ich will mittels DX9.0c und ID3DXSprite eine 2D-Engine realisieren.
Ich habe testweise mal versucht, ein Sprite anzuzeigen und zu Rotieren.
ÜberD3DXMATRIX m, t, r; D3DXMatrixRotationZ(&r,3.14152f/10.0f); D3DXMatrixTranslation(&t,m_vPosition.x, m_vPosition.y, 0.0f); D3DXMatrixMultiply(&m, &t, &r); m_pSprite->SetTransform(&m); m_pSprite->Draw( m_vecTextures[m_iCurTex], 0, &D3DXVECTOR3((float)m_iWidth/2.0f,(float)m_iHeigth/2.0f,0.0f), 0, 0xFFFFFFFF);wird das Sprite zwar Translationiert und Rotiert, jedoch wird durch das Multiplizieren der Matrizen in Richtung der Rotation verschoben (wenn ich also z.B. nur in x-Richtung verschieben will, wird das Sprite schräg Translationiert).
Was ich eigentlich will, ist nur das Sprite an sich zu Rotieren und anschliessend das rotierte Sprite zu verschieben.
Wie lässt sich sowas Realisieren?thx
-me
-
Für Matrizen gilt: M*N != N*M
Du must also die Rotationsmatrix mit der Translationsmatrix multiplizieren und nicht umgekehrt.
Dann wird der Punkt erst rotiert, und dann verschoben.
-
Danke, funktioniert super!
-
das Sprite wird Translationiert

-
OK, da sehe ich auch gewisse Parallelen zu Übersetzen ^^ Aber das korrekte (?) Verb will mir just nicht in den Sinn kommen, help?
-
-
Zum Glück ist Wochenende, sonst würde ich mich jetzt arg über dich aufregen.
-me
-
Na das kannst du ja auch Montag noch nachholen. f'`8k
Gruß, TGGC (\-/ returns)