1. Ãbung zu Computergrafik 1
1. Ãbung zu Computergrafik 1
1. Ãbung zu Computergrafik 1
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
<strong>1.</strong> Übung <strong>zu</strong> <strong>Computergrafik</strong> 1<br />
Sommersemester 2011<br />
Jun.-Prof. Thorsten Grosch<br />
Abgabe bis Dienstag, den 19.04.2011 15:00 Uhr<br />
Aufgabe 1: Normalisierung (1,5 Punkte)<br />
Berechnen Sie die Länge der folgenden Vektoren und normalisieren Sie die Vektoren auf Länge Eins:<br />
1<br />
2<br />
3<br />
0<br />
0<br />
15<br />
a) b) c)<br />
–1<br />
0<br />
1<br />
Aufgabe 2: Skalarprodukt (1,5 Punkte)<br />
Berechnen Sie die folgenden Skalarprodukte: a) b) c)<br />
Aufgabe 3: Kreuzprodukt (2 Punkte)<br />
3<br />
4<br />
7<br />
–2<br />
• 5<br />
3<br />
–5<br />
0<br />
3<br />
4<br />
• –2<br />
1<br />
3<br />
0<br />
–5<br />
0<br />
• 4<br />
0<br />
5<br />
3 ×<br />
0<br />
–2<br />
4<br />
0<br />
Berechnen Sie folgende Kreuzprodukte: a) b)<br />
1<br />
0<br />
0<br />
×<br />
0<br />
0<br />
–1<br />
Geben Sie in beiden Fällen an, wohin zeigt der resultierende Vektor in einem Rechts - bzw. Linkssystem<br />
zeigt. Die xy-Ebene ist dabei die Zeichenebene.<br />
Aufgabe 4: Kreuzprodukt senkrecht (3 Punkte)<br />
a × b<br />
a<br />
Zeigen Sie, daß der Vektor senkrecht auf steht.<br />
Aufgabe 5: Ebenengleichung (4 Punkte)<br />
Gegeben ist ein Dreieck mit den drei Punkten , und .<br />
a) Geben Sie die Ebenengleichung des Dreiecks in Parameterform an.<br />
b) Geben Sie die Ebenengleichung des Dreiecks in Hesse’scher Normalform ( n 0<br />
• x – d = 0 ) an.<br />
c) Berechnen Sie die Fläche des Dreiecks.<br />
P 0 = P 1 = P 2 2 2 = 1<br />
2 1<br />
1<br />
1 2<br />
1<br />
April 12, 2011 1
Aufgabe 6: Fehlersuche (3 Punkte)<br />
3<br />
a = 0 b =<br />
4<br />
Gegeben sind die beiden Vektoren und .<br />
Zur Berechnung des Winkels zwischen den beiden Vektoren werden zwei verschiedene Varianten vorgeschlagen:<br />
–4<br />
–3<br />
0<br />
a • b<br />
a • b = abcosα ⇒ α=<br />
acos ⎝<br />
⎛ ----------<br />
ab ⎠<br />
⎞ a × b = absinα ⇒ α=<br />
a) b)<br />
asin a × b<br />
⎝<br />
⎛ --------------<br />
ab ⎠<br />
⎞<br />
Berechnen Sie den Winkel nach beiden Varianten. Warum sind die beiden Winkel unterschiedlich und<br />
welcher ist der richtige ?<br />
Aufgabe 7: Vektorzerlegung (3 Punkte)<br />
Gegeben sind die beiden Vektoren und . Zerlegen Sie den Vektor in zwei Komponenten:<br />
Eine parallele Komponente und eine senkrechte Komponente <strong>zu</strong> .<br />
Aufgabe 8: Kamera (3 Punkte)<br />
y<br />
a<br />
=<br />
3<br />
b<br />
7<br />
w<br />
3<br />
--<br />
=<br />
5<br />
a<br />
4<br />
--<br />
5<br />
b<br />
z<br />
2α<br />
x<br />
f<br />
h<br />
Von einer Kamera sind folgende Werte bekannt:<br />
Horizontaler (voller) Öffnungswinkel , Bildbreite w = 2 und Bildhöhe h = <strong>1.</strong>8<br />
a) Berechnen Sie den Abstand f von der Kamera <strong>zu</strong>r Bildebene<br />
b) Berechnen Sie den vertikalen Öffnungswinkel der Kamera<br />
c) Berechnen Sie die Koordinaten des linken oberen Bildpunkts im Kamerakoordinatensystem (x,y,z)<br />
Aufgabe 9: Vektorklasse (2 Punkte)<br />
2α = 60°<br />
Implementieren Sie das Kreuzprodukt für die Klasse Vector3D. Sie können sich bei der Programmierung am<br />
Skalarprodukt orientieren. Testen Sie Ihre Funktion mit den Vektoren aus Aufgabe 3.<br />
April 12, 2011 2
Aufgabe 10: Sierpinski Dreiecke (4 Punkte)<br />
w<br />
P<br />
0<br />
0<br />
= P<br />
w<br />
1<br />
=<br />
---<br />
P 2<br />
= 2<br />
0 0<br />
h<br />
Gegeben sind drei Punkte , ,<br />
Schreiben Sie ein Programm punkte.cpp, das folgenden Algorithmus ausführt:<br />
Setze<br />
P = P 0<br />
Wiederhole N mal<br />
Wähle <strong>zu</strong>fällig einen Punkt<br />
Setze<br />
P<br />
Zeichne Punkt<br />
1<br />
= -- ( P + P<br />
2 i<br />
)<br />
P<br />
P i<br />
( i ∈ { 0, 1,<br />
2}<br />
)<br />
Legen Sie ein OpenGL Fenster mit Breite w und Höhe h an und setzen Sie glOrtho(0, w, 0, h, -1, 1). Zum<br />
Erzeugen der Zufallszahlen können Sie die Funktion rand() aus stdlib.h verwenden.<br />
Als Zahlenwerte können Sie z.B. w = 600, h = 600, N = 100000 verwenden.<br />
April 12, 2011 3