Erwartungshorizont
Um die späteren Berechnungen und die Rotation des Objekts zu vereinfachen, sollte das Objekt mit Hilfe einer Punktliste der Eckpunkte modelliert werden.
Die Verwendung von Dreiecken für die Oberfläche stellt sicher, dass alle Eckpunkte innerhalb einer Ebene liegen.
Es ist empfehlenswert, dass der Mittelpunkt des Objekts im Koordinatenursprung liegt, um später die Rotation (um die Achsen) zu vereinfachen.
Beispiel:
P' = {(0, 0, -3), (2, 0, 0), (0, 2, 0), (-2, 0, 0), (0, -2, 0), (0, 0, 3)}
Ergebnis:
Als nächstes sollte - noch vor dem Einfügen der Oberflächen - die Rotation des Objekts ermöglicht werden. Im folgenden Beispiel wird eine Rotation um alle 3 Achsen des Koordinatensystems ermöglicht.
Dazu werden zunächst 3 Schieberegler für die Rotationswinkel platziert: \(\alpha\), \(\beta\) und \(\gamma\).
Mit dem Befehl "Drehe()" kann dann die gesamte Punktliste der Eckpunkte in Abhängigkeit der Rotationswinkel rotiert werden - hier je 1 mal pro Achse.
Beispiel:
P'' =Drehe(P', α, zAchse) P'''=Drehe(P'', β, yAchse) P =Drehe(P''', γ, xAchse)
Ergebnis:
Erst jetzt sollten die Oberflächenpolygone hinzugefügt werden. Als Grundlage hierzu wird die letzte Punktliste benutzt - also jene, die um alle 3 Achsen rotieren kann.
Beim Hinzufügen der Polygone entstehen automatisch Einzelpunkte, die an die verwendete Punktliste gebunden sind. Daher können/sollten die Punktlisten selbst jetzt aus der Grafikansicht ausgeblendet werden.
Für die verschiedenen Oberflächen sollten verschiedene Farben genutzt und die Transparenz entfernt werden.
Beispiel/Ergebnis:
Dieses Objekt kann jetzt mit Hilfe der Schieberegler frei in alle Richtungen gedreht werden.
Hierfür sollten zwei weitere Punkte gesetzt werden, die - durch einen Vektor verbunden - die Blickrichtung definieren.
Der Startpunkt (Beobachterposition) sollte außerhalb des Objekts liegen, der Zielpunkt kann (aber nicht muss) innerhalb liegen. Sinnvoll ist es, den Zielpunkt zu fixieren und den Startpunkt frei verschiebbar zu lassen.
Beispiel/Ergebnis:
Mit dem Befehl
SetzeAnsichtsrichtung(<Blickrichtungsvektor>)wird die Ansicht in GeoGebra entlang des eben definierten Vektors ausgerichtet. So lässt sich später die Wirksamkeit des Backface Culling gut überprüfen.
Beispiel/Ergebnis:
Gesucht werden nun die Vektoren, die die Lage der Oberflächen im Raum eindeutig beschreiben und daher auf diesen senkrecht stehen (Normalenvektoren).
Mit Hilfe der entsprechenden Tipps lässt sich die Berechnung der Normalenvektoren über das Skalarprodukt herleiten: Die Normalenvektoren sind das Resultat des Vektor-/Kreuzprodukts zweier Vektoren, die die jeweilige Oberfläche aufspannen.
Wichtig dabei: Die Drehrichtung beachten (rechtsdrehend), so dass die resultierenden Normalenvektoren "aus dem Objekt heraus" zeigen.
\( \vec{n_1} = \overrightarrow{AB} \times \overrightarrow{AC}\)
Diese Normalenvektoren müssen nun für jede der Oberflächen in GeoGebra hinzugefügt werden.
Beispiel:
n_1 = Kreuzprodukt(Vektor(A,B), Vektor(A,C))
Ergebnis:
Eine Oberfläche ist dann sichtbar, wenn ihr Normalenvektor grob entgegengesetzt zum Blickrichtungsvektor verläuft. In diesem Fall ist das Skalarprodukt dieser beide Vektoren negativ.
Dieser Zusammenhang kann als Bedingung für die Sichtbarkeit der Oberfläche verwendet werden:
Falls \( \vec{n} \cdot \vec{v} < 0\), dann ist die entsprechende Oberfläche sichtbar.
Diese Bedingung muss im Eigenschaftsdialog des jeweiligen Oberflächenpolygons unter "Bedignung, um Objekt anzuzeigen" eingetragen werden:
Skalarprodukt(n_1, v) < 0
Ergebnis:
Auch dies muss für jede Oberfläche erledigt werden.
Abschließend können die Eckpunkte noch ausgeblendet werden. Bei Rotation des Objekts (über die Schieberegler) oder Veränderung des Blickrichtungsvektors wirkt nun das Backface Culling in Echtzeit.
Zur Kontrolle kann das rotierende Objekt einmal entlang des Blickrichtungsvektors und einmal aus einer deutlich anderen Richtung, etwa entgegengesetzt dem Blickrichtungsvektor, betrachtet werden.
Anregungen für Erweiterungen des Demonstrationsmodells (Lösungen siehe ggb-Dateien unten):
- Schaltfläche zum Starten/Stoppen der Rotation (GeoGebra-Skripting notwendig)
- Schaltfläche zum Zurücksetzen der Ansichtsrichtung entlang des Blickrichtungsvektors (wenig GeoGebra-Skripting notwendig)
- Kontrollkästchen zum Ein- und Ausblenden der Normalenvektoren
- Produktion von Videos/Animationen aus zwei Ansichtsrichtungen gleichzeitig
ggb-Dateien zum Download:
- ggb-Datei als "aufgeräumtes" Handlungsergebnis
- ggb-Datei mit allen Konstruktionsobjekten
- Siehe auch Handlungsergebnis