3D-Mathe-Fragen (Abbildungsmatrizen)

Themen zum Programmieren, Skripten, etc.

Moderator: LiMuBei

Antworten
Benutzeravatar
Behemoth
Initiative Big Boss
Beiträge: 1827
Registriert: Donnerstag 10. Februar 2005, 14:48
Wohnort: Karlsruhe

3D-Mathe-Fragen (Abbildungsmatrizen)

Beitrag von Behemoth » Montag 7. März 2011, 13:01

Ich hätte da zwei Fragen zu 3D-Mathe, mit denen ich bei meiner selbstgebastelten 3D-Engine irgendwann mal paar Performance-Sachen etwas angehen wollte. Eventuell erinnert sich noch der eine oder andere an Mathevorlesungen damals oder hat einfach so eine gute Idee. Geht um Abbildungsmatrizen.

Gegeben: drei 4x4 Matrizen (wie hieß das? Homogen?) M (Model), V (View) und P (Perspective). M kümmert sich um die Position/Drehung eines Objektes, V um die Position des Betrachters/Camera und P wandelt das ganze unter Berücksichtigung der Perspektive in 2d Koordinaten auf dem Bildschirm um. Um also die Screen-Position eines Punktes zu bestimmen, der in einem Object auf Position p = (p1, p2, p3, 1) liegt, muss ich den nur mit allen multiplizieren: p' = P x V x M x p
So weit so gut, alles Standardkrempel. Aber meine Frage:

1. Fällt Euch eine (möglichst einfache und schnelle) Methode ein, um mit gegebenen Infos folgende Frage zu beantworten?
Wie lauten die x- und y-Koordinaten und die Höhe und Breite eines Rechtecks/Quadrats in Screen-Koordinaten, welches eine Kugel genau umschließt, die den Mittelpunkt m und Radius r in Objektkoordinaten hat?
Anders formuliert: Wo auf dem Bildschirm landet die Kugel?

2. Wenn ich einen Quader Qo bekannter Größe habe, der entlang der Achsen des Objektkoordinatensystems ausgerichtet ist, welche Koordinaten haben dann die Quader Qm bzw. Qv, die entlang der Achsen der Welt bzw. der View-Achsen ausgerichtet sind und den transformierten Quader Qo genau umschließen?
Anders formuliert: Wenn ich eine Axis-aligned-Bounding Box habe gegeben durch (Xmin, Ymin, Zmin) und (Xmax, Ymax, Zmax), welche Bounding-Box umschließt diese Bounding-Box wenn man sie transformiert. Naiver Ansatz: alle acht Eckpunkte transformieren und Minima/Maxima bestimmen - aber geht's besser?

Hoffe, es ist irgendwie verständlich, was ich meine.
Look at me, I'm invisible!

Benutzeravatar
LiMuBei
J:I Chief
Beiträge: 1415
Registriert: Sonntag 23. Januar 2005, 18:44
Wohnort: Karlsruhe
Kontaktdaten:

Re: 3D-Mathe-Fragen (Abbildungsmatrizen)

Beitrag von LiMuBei » Montag 7. März 2011, 23:15

Also zu 2. würde ich mal behaupten dass es nicht besser geht. Über 1. muss ich mal noch nachdenken.
Against logic there is no armor like ignorance.

Benutzeravatar
Behemoth
Initiative Big Boss
Beiträge: 1827
Registriert: Donnerstag 10. Februar 2005, 14:48
Wohnort: Karlsruhe

Re: 3D-Mathe-Fragen (Abbildungsmatrizen)

Beitrag von Behemoth » Mittwoch 6. Februar 2013, 11:03

Zu 2. habe ich tatsächlich eine bessere Lösung in einem Buch gefunden - war wohl nicht der einzige mit dem Problem. :-)

Kurzfassung (weil etwas unintuitiv): Minima-Vector transformieren, Maxima-Vector transformieren, (Maxima-Minima)-Vector transformieren und dann über ein paar geschickt gewählte if then else Abfragen die miteinander verrechnen.
Look at me, I'm invisible!

Antworten