Solide Rotationskörper

Beispiel

Visual Studio Projekt herunterladen

Dieses Projekt unternimmt zwei Versuche:

  • Lichtquellen und Farben in eigene Klassen zu gießen
  • Eigene Körper zu zeichnen
Normalen

Wie angedeutet, ist ein wesentlicher Bestandteil der Beleuchtung die Orientierung einer Fläche bzw. eines Vektors im Raum.

Die Orientierung einer Fläche wird normalerweise über die Normale der Fläche angegeben, also einem Vektor, der senkrecht auf der Fläche steht. In der render-Methode der Klasse CRotation (rotation.cpp) berechnen wir eine solche Normale für jeden Vektor, den wir setzen. Ähnlich dem Setzen einer Farbe für einen Vektor geschieht das Setzen der Normale immer vor dem zugehörigen glVertex Befehl.

Die Methode calculatePosition berechnet jeweils eine Position auf dem Rotationskörper. Schlagt noch einmal im Kapitel über Vektoren nach und untersucht das Kreuzprodukt, das wir in der Methode calculateNormal anwenden.

Selbständige Programmierung
  • Kommentiere in der render Funktion von main.cpp den Aufruf glShadeModel(GL_FLAT) aus und beobachte das Ergebnis.
  • Füge eine Funktion renderCube in main.cpp ein, die Seite für Seite einen Würfel zeichnet. Es wird nur eine Normale proSeite benötigt, also ein glNormal Befehl gefolgt von vier Punkten. Fertige eine Zeichnung an!
  • Was passiert, wenn die Normalen des Würfels nicht die Länge Eins haben?
  • Bei Interesse: Es fehlt noch eine eigene Klasse für Materialparameter...

zurück