3D-Mathe-Fragen (Abbildungsmatrizen)
Verfasst: 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.
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.