• Keine Ergebnisse gefunden

Ubungen zu Computergraphik - Blatt 3 ¨

N/A
N/A
Protected

Academic year: 2021

Aktie "Ubungen zu Computergraphik - Blatt 3 ¨"

Copied!
3
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Prof. G. Zachmann D. Mohr

Universit¨at Bremen Fachbereich 3 Arbeitsgruppe CGVR

29. Oktober 2013

Wintersemester 2013/14

Ubungen zu Computergraphik - Blatt 3 ¨

Abgabe am 05. 11. 2013

Aufgabe 1 (Mathematische Grundlagen, 4 Punkte)

Gegeben sei eine Ebene E der Formnx+c= 0 und ein PunktP. Der Einfachheit halber k¨onnen Sie annehmen, dass die Normalennormiert ist. Bestimmen Sie den PunktQ, der durch Spiegelung von P anE hervorgeht.

Aufgabe 2 (Geometrische Pr¨ adikate, 4 Punkte)

Beschreiben Sie ein geometrisches Pr¨adikat, um zu testen, ob ein Punkt P ∈ R3 innerhalb eines gegebenen DreieckesA, B, C im R3 liegt. Verwenden Sie keine Projektion oder ¨Ahnliches, sondern ausschließlich das Skalar- und das Kreuzprodukt.

Tip: eine (von mehreren) M¨oglichkeiten ist, den Umlaufsinn der Teildreiecke, die mit 2 Eckpunkten des Ursprungsdreiecks und dem PunktP gebildet werden, zu ¨uberpr¨ufen.

Aufgabe 3 (Rasterisierung, 3 Punkte)

Gegeben sei eine Gerade die durch die Punkte P1 = (2; 5) undP2 = (8; 2) verl¨auft. Berechnen Sie die Rasterung der Geraden mittels des Midpoint-Algorithmus. Geben Sie alle Zwischenschritte Ihrer Rechnung mit an. Zeichnen Sie das Ergebnis in das in Abb. 1 angegebene Raster.

Aufgabe 4 (OpenGL/Qt, 3+4+5 Punkte)

a) Implementieren Sie die MethodedrawTetrahedron(). Der Methode werden vier Parameter vom TypVector3¨ubergeben, die die Eckpunkte des Tetraeders bestimmen.

Berechnen Sie auch die Fl¨achennormalen und geben Sie diese mitglNormal3f()an.

Hinweise:

• Die Normalen m¨ussen vor den Vertices angegeben werden.

• Die Normalen zeigen immer vom Objekt weg, also nach außen.

• Die Normale m¨ussen auf die L¨ange 1 normalisiert sein.

b) In dieser Teilaufgabe sollen Sie ein etwas komplexeres Objekt (der Einfachheit halberTetraflake genannt) konstruieren. Als Basis nehmen Sie den Tetraeder. Auf jede Seitenfl¨ache des Tetraeders wird ein weiterer Tetraeder (Kindtetraeder) aufgesetzt, dabei sollen die Grundfl¨achen des Vater- und Kindtetraeders mittig zentriert sein. Diesen Vorgang kann man rekursiv fortsetzen. Abbildung 2 illustriert einen Rekursionsschritt, und Abbildung 3 zeigt ein konkretes Beispiel. Die folgenden Instanzvariablen sind zu beachten:

1

(2)

8 7 6 5 4 3 2 1

0 1 2 3 4 5 6 7 8 9 10 11

Abbildung 1: Pixelraster

• m_flakeRecursionDepth bestimmt die Rekursionstiefe .

• m_flakeTetraChildSize∈[0,1] bestimmt die Gr¨oße der Grundfl¨ache des Kindtetraeders (die- se liegt somit zwischen 0 und der Grundfl¨ache des Vatertetraeders).

Tip: Interpolieren Sie linear zwischen dem DreiecksmittelpunktPmund den EckpunktenP{0,1,2}. Abbildung 3 zeigt ein Beispiel mit dem Interpolationswert s≈0.5.

• m_flakeTetraHeight ∈ [0,1] bestimmt die H¨ohe h (damit liegt die H¨ohe zwischen 0 und

||(P1−P0)×(P2−P0)||.

Implementieren Sie die oben erkl¨arte Funktionalit¨at in der FunktiondrawTetraFlake().

c) Im Framework steht eine Szene zur Verf¨ugung, die eine Ebene und einige Tetraflakes enth¨alt.

Modifizieren Sie die MethodedrawTetraFlake()so, dass ein Vertex gr¨un gezeichnet wird, wenn er auf einer Seite der Ebene liegen und rot, wenn er auf der anderen Seite liegt. Schneidet der Tetraflake die Ebene, so wird er gelb eingef¨arbt.

Die Farbwerte werden ¨uberglColor3f()gesetzt. Die Ebene wird durch einen Punkt in der Ebene, m_plane_point, und zwei orthogonale Vektorenm_plane_vectorsdefiniert.

Abbildung 2:

2

(3)

Rekursionstiefe 0 Rekursionstiefe 1 Rekursionstiefe 2 Abbildung 3: Beispiel wie das Ergebnis aus Teil b) aussehen soll

3

Referenzen

ÄHNLICHE DOKUMENTE

b) Geben Sie einen Algorithmus zum Rendern einer beliebigen Szene aus Dreiecken an, der einen Overdraw von 1 f¨ ur alle Pixel erreichen.. Aufgabe 2 (Z-Buffer: Wireframe-Darstellung

j = 1.01 eine Abstufung von Intensit¨ atswerten ergibt, die man als Mensch nicht mehr als “Stufen” wahrnehmen kann (d.h., diese Abst¨ ande liegen gerade unter der sog.

Zeigen Sie, dass auch bei Verwendung der Fl¨ achenformel (auf Folie 11 des Kapitels “Baryzentrische Koordinaten”) wenigstens eine der 3 baryzentrischen Koordinaten eines Punktes

Setzen Sie nun die Texturkoordinaten, so daß die Textur in z-Richtung (= v-Richtung der Textur) f¨ unfmal wiederholt wird. Setzen Sie zun¨ achst beide Texturfilter auf GL_NEAREST..

In dieser Aufgabe sollen Sie den Algorithmus von Pineda so erweitern, dass ein nicht-konvexes einfaches Polygon rasterisiert werden kann. Verwenden Sie dazu die aus der

Um zu gew¨ ahrleisten, dass die komplette Textur verarbeitet wird, wird ein bildschirmf¨ ullendes Rechteck gezeichnet, welches die Fragmentshaderaufrufe “anwirft” (ein Shader-

In der Funktion Raytracer::render() werden die Strahlen f¨ ur die einzelnen Pixel erzeugt und mittels der Funktion Raytracer::traceRay() durch die Szene verfolgt.. Die Funktion

b) Gegeben sind die baryzentrischen Koordinaten (α, β, γ) des Dreiecks 4ABC (Abb. Hierbei bedeutet − kleiner und + gr¨ osser