Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

flux

Treue Seele

  • »flux« ist der Autor dieses Themas
  • Private Nachricht senden

1

03.05.2010, 22:14

Rotation und Translation aus Homography Matrix

Hallo Zusammen.

Ich habe mal wieder ein Problem.
Für ein Bild mit einem Viereck habe ich eine Homography- Matrix (3x3) berechnet, um eine perspektivische Transfomation zu machen (Sowas in der Art).Das hat auch gut funktioniert.

Jetzt möchte ich gerne die Rotation und Translation herausfinden, die dabei gemacht wurde, um dann mit OpenGL an dieser Stelle einen 3D Würfel anzuzeigen (wie hier).

Ich komme da im Moment nicht weiter. Könnt ihr mir da weiter helfen?
Wie bekomme ich die Rotation und Translation aus der Homography Matrix?

lg flux

2

03.05.2010, 22:47

Hm, du könntest versuchen, es selber herzuleiten, indem du einfach eine allgemeine Rotationsmatrix mit einer allgemeinen Translationsmatrix multiplizierst und dann umstellst.
Es gibt auch viele OpenSource Matrixbibliotheken, wo du die Formel raussuchen kannst, wo man sie in schöner Form im Internet findet, weiß ich grad leider nicht.

Aber du kannst auch OpenGL direkt eine fertige Matrix geben, das ist das einfachste und effizienteste, du musst halt nur eine 4x4 Matrix daraus machen (halt n paar 0llen und ne 1 einsetzen).
Lieber dumm fragen, als dumm bleiben!

flux

Treue Seele

  • »flux« ist der Autor dieses Themas
  • Private Nachricht senden

3

04.05.2010, 13:21

So, ich hab mal ein Beispiel gemacht (Bild im Anhang).
Das Quadrat ist um 60° an der X-Achse und 45° an der Z-Achse gedreht und hat jetzt die Eckpunkte (399, 40), (551, 206), (401, 287), (248, 206).
Das Quadrat wird dann zu dem Quadrat (0, 0), (100, 0), (100, 100), (0, 100) transformiert.
Die Homography Matrix (normalisiert) sieht so aus.
§ \begin{pmatrix} 0.19702671 & 0.17922309 & -85.78258514 \\ -0.19923460 & 0.18243168 & 72.19734192 \\ -0.00002208 & -0.0018973 & 1 \end{pmatrix} §

Wie kann ich denn daraus eine 4x4 matrix machen?
So hab ich das irgendwo gefunden (leider keinen Link mehr dazu), aber damit kam ich nicht weiter.
§ \begin{pmatrix} h_{11} & h_{12} & 0 & h_{13} \\ h_{21} & h_{22}& 0 & h_{23} \\ 0 & 0 & 0 & 0 \\ h_{31} & h_{32}& 0 & h_{33} \end{pmatrix} §
»flux« hat folgendes Bild angehängt:
  • Red.png

BlazeX

Alter Hase

Beiträge: 478

Wohnort: DD

Beruf: Maschinenbau-Student

  • Private Nachricht senden

4

04.05.2010, 14:11

In etwa so:
§ \begin{bmatrix} a11 & a12 & a13\\ a21 & a22 & a23\\ a31 & a32 & a33 \end{bmatrix} \to \begin{bmatrix} a11 & a12 & a13 & 0\\ a21 & a22 & a23 & 0\\ a31 & a32 & a33 & 0\\ 0 & 0 & 0 & 1 \end{bmatrix} §

Für andere Transformationsmatrizen musste halt mal selbst nachschauen. Hier mal ein paar interessante Namen: Translation, Skalierung, View Matrix, Axis Matrix, Perspective Projection Matrix, Orthogonal Projection Matrix.

Das was du gefunden hast, ist für die Umwandlung einer 2D-Trafo-Matrix in die 3D-Trafo-Matrix.

5

05.05.2010, 23:06

das müsste dir glaub ich weiterhelfen, setzt aber etwas mathematisches verständnis \v\o\r\r\a\u\s...
aber wie schon gesagt, es gibt genug mathLibs, die das für dich erledigen

edit: was zur hölle?
"Deine Nachricht enthält folgende zensierte Wörter: \v\o\r\r\a\u\s"

TSS

Frischling

  • Private Nachricht senden

6

06.05.2010, 00:02

Wohl die Rechtschreibzensur, ein 'r' reicht ;)

Werbeanzeige