pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Ubungsstunde 2 zu Computergrafik 1
Diana, Dominik und Gerrit
Institut fur ComputervisualistikUniversitat Koblenz
29. und 30. Oktober 2012
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Inhaltsverzeichnis
1 Organisatorisches
2 Mathematik
3 C++ und Vector-Klasse
4 OpenGL
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Ein paar Worte zu CG1 vorab...
Das bisher gelernte...
z. B. aus OOPM
aus Mathematik
... wird angewendet und weitergefuhrt.
Achz...
...und wir dachten, jetzt wurde es cool...
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Ein paar Worte zu CG1 vorab...
Wird es auch ¨
Nun sieht man, was man mit all dem machen kann...
Kurze Roadmap
Mathematische Grundlagen
Computergrafik-Grundlagen
OpenGL
Erste Anwendung: Komplettes Spiel mit Steuerung und allemdrum und dran in der Weihnachtsvorlesung!
...und noch viel mehr!
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Ubungsbetrieb
Mitgestaltungsmoglichkeiten der Ubungen
Meldet Euch, wenn...
Ihr etwas nicht ganz verstanden habt
Ihr Wunsche und Anregungen habt
Ihr Kritik und Vorschlage habt
Kontakt Ubungsleiter
Diana: mailto:[email protected]
Dominik: mailto:[email protected]
Gerrit: mailto:[email protected]
Kontakt Korrektoren & SVN
Korrektor: Nico Merten: mailto:[email protected]
Korrektor: Kevin Keul: mailto:[email protected], Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Ubungsbetrieb
Ubungsblatter
Abgabe via SVN
Ansprechpartnerin: Diana Rottgermailto:[email protected]
Abgabe
Abgabe immer bis freitags 12 Uhr
https://svn.uni-koblenz.de/cg/CG1_WS1011/GruppeX
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Ubungsbetrieb
Abgabe-SVN
Abgabe von Programmcode
.h-Dateien
.cpp-Dateien
Sonst nichts!
Abgabe von Theorieaufgaben
Als PDF!
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Ubungsbetrieb
Abgabe-SVN
Ihr durft einchecken...
menschenlesbaren Code: (*.h, *.cpp, ...)
menschenlesbare Konfigurationsdateien
Unterordner
Textdokumente
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Ubungsbetrieb
Abgabe-SVN
Ihr durft nicht einchecken...
Kompilate und Zwischenkompilate (*.exe, *.lib, *.a, *.dll,*.manifest, *.obj, *.pdb ...)
Projektdateien, die eure personlichen Konfigurationenenthalten (.project, .cproject, *.sln, ...)
Anhaltspunkt: Alles was sonst großer als 100kb ist, gehortwahrscheinlich nicht ins SVN.
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Ubungsbetrieb
Klausurzulassung
Klausur CG1
Mindestens 50% der Theoriepunkte.
Mindestens 50% der Praxispunkte.
CV-Programmierpraktikum CG-Teil
Mindestens 50% der Theoriepunkte.
Mindestens 50% der Praxispunkte.
Bei der BV gibt es keine Zulassungsbeschrankungen
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Ubungsbetrieb
Weitere wichtige Anlaufstellen
Newsgroup: infko.cg (wichtig!), zur Not mithttps://deliver.uni-koblenz.de/webnews/
newsgroups.php?search_txt=&group=infko.cg
Webseite:http://www.uni-koblenz-landau.de/koblenz/fb4/
institute/icv/agmueller/lehre/ws1213/cg1
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Ubungsbetrieb
Ubungsbetrieb
Ablauf des Ubungsbetriebs
Jeden Freitag gibt’s ein neues Ubungsblatt auf der Seite zurCG1-Lehre:http://www.uni-koblenz-landau.de/koblenz/fb4/
institute/icv/agmueller/lehre/ws1213/cg1
Die bearbeiteten Ubungsblatter mussen immer amdarauffolgenden Freitag bis 12 Uhr im SVN abgegeben werden
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Ubungsbetrieb
Bezug der Ubungen zum Rest der Veranstaltung
Die Ubung soll...
Gesamtverstandnis herstellen
Bezug zu anderen Veranstaltungen herstellen und Gehortesvertiefen
sowohl theoretische Grundlagen als auch praktischeUmsetzungen abdecken
Viel bisher Gelerntes zusammen- und weiterfuhren!
CV-Programmierklausur
Vorbereitung zur CV-Programmierklausur!
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Ubungsbetrieb
CV-Programmierklausur
Termin
Fr., 22.02.2013, 8 bis 12 Uhr
Dieser Termin ist aufgrund des Planungsaufwandes fur das Institutfur Wissensmedien fest.
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Ubungsbetrieb
CG1-Hauptklausur
Termin: 07.02.2013
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Ubungsbetrieb
Bezug der Ubungen zum Rest der Veranstaltung
Jede Ubung...
bezieht sich auf den Stoff der aktuell zu bearbeitendenUbungsblatter
greift den Vorlesungsstoff auf und vertieft ihn in direktemBezug auf die Ubungsaufgaben
bespricht Beispielaufgaben, die die aktuell zu bearbeitendenAufgaben vorbereiten und erklaren
Losungen fur Aufgabenblatter
Es werden keine Musterlosungen veroffentlicht! Aufgaben werdenin den Ubungen vorbereitet, die Abgaben werden ausfuhrlichkommentiert.
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Berechnung des Skalarprodukts
Allgemein abc
• x
yz
= (a · x) + (b · y) + (c · z)
Beispiel 247
• −2
36
= (2 · (−2)) + (4 · 3) + (7 · 6) = 50
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Berechnung des Skalarprodukts
Allgemein abc
• x
yz
= (a · x) + (b · y) + (c · z)
Beispiel 247
• −2
36
= (2 · (−2)) + (4 · 3) + (7 · 6) = 50
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Berechnung des Skalarprodukts
Allgemein abc
• x
yz
= (a · x) + (b · y) + (c · z)
Beispiel 247
• −2
36
= (2 · (−2)) + (4 · 3) + (7 · 6) = 50
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Berechnung des Skalarprodukts
Allgemein abc
• x
yz
= (a · x) + (b · y) + (c · z)
Beispiel 247
• −2
36
= (2 · (−2)) + (4 · 3) + (7 · 6) = 50
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Was besagt das Ergebnis des Skalarprodukts?
Orthogonalitat
~a • ~b = 0⇔ Vektoren sind orthogonal zueinander (d. h. sie stehensenkrecht aufeinander).
Beispiel 100
• 0
10
= (1 · 0) + (0 · 1) + (0 · 0) = 0
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Was besagt das Ergebnis des Skalarprodukts?
Orthogonalitat
~a • ~b = 0⇔ Vektoren sind orthogonal zueinander (d. h. sie stehensenkrecht aufeinander).
Beispiel 100
• 0
10
= (1 · 0) + (0 · 1) + (0 · 0) = 0
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Was besagt das Ergebnis des Skalarprodukts?
Orthogonalitat
~a • ~b = 0⇔ Vektoren sind orthogonal zueinander (d. h. sie stehensenkrecht aufeinander).
Beispiel 100
• 0
10
= (1 · 0) + (0 · 1) + (0 · 0) = 0
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Was besagt das Ergebnis des Skalarprodukts?
Orthogonalitat
~a • ~b = 0⇔ Vektoren sind orthogonal zueinander (d. h. sie stehensenkrecht aufeinander).
Beispiel 100
• 0
10
= (1 · 0) + (0 · 1) + (0 · 0) = 0
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Was besagt das Ergebnis des Skalarprodukts?
Winkel zwischen zwei Vektoren
Das Ergebnis des Skalarprodukts gibt Aufschluss uber den Winkelzwischen zwei Vektoren:
~a • ~b = 0→ α = 90◦
~a • ~b < 0→ α > 90◦
~a • ~b > 0→ α < 90◦
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Was besagt das Ergebnis des Skalarprodukts?
Winkel zwischen zwei Vektoren
Das Ergebnis des Skalarprodukts gibt Aufschluss uber den Winkelzwischen zwei Vektoren:
~a • ~b = 0→ α = 90◦
~a • ~b < 0→ α > 90◦
~a • ~b > 0→ α < 90◦
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Was besagt das Ergebnis des Skalarprodukts?
Winkel zwischen zwei Vektoren
Das Ergebnis des Skalarprodukts gibt Aufschluss uber den Winkelzwischen zwei Vektoren:
~a • ~b = 0→ α = 90◦
~a • ~b < 0→ α > 90◦
~a • ~b > 0→ α < 90◦
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Was besagt das Ergebnis des Skalarprodukts?
Lange eines Vektors
Das Skalarprodukt kann zur Berechnung der Lange eines Vektors
benutzt werden: |~v | =√~v • ~v =
√~v2x + ~v2y + ~v2z
Beispiel
~v =
296
, |~v | =
√√√√√ 2
96
• 2
96
=
√(2 · 2) + (9 · 9) + (6 · 6) =
√22 + 92 + 62 =
√121 = 11
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Was besagt das Ergebnis des Skalarprodukts?
Lange eines Vektors
Das Skalarprodukt kann zur Berechnung der Lange eines Vektors
benutzt werden: |~v | =√~v • ~v =
√~v2x + ~v2y + ~v2z
Beispiel
~v =
296
, |~v | =
√√√√√ 2
96
• 2
96
=
√(2 · 2) + (9 · 9) + (6 · 6) =
√22 + 92 + 62 =
√121 = 11
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Was besagt das Ergebnis des Skalarprodukts?
Lange eines Vektors
Das Skalarprodukt kann zur Berechnung der Lange eines Vektors
benutzt werden: |~v | =√~v • ~v =
√~v2x + ~v2y + ~v2z
Beispiel
~v =
296
, |~v | =
√√√√√ 2
96
• 2
96
=
√(2 · 2) + (9 · 9) + (6 · 6) =
√22 + 92 + 62 =
√121 = 11
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Was besagt das Ergebnis des Skalarprodukts?
Lange eines Vektors
Das Skalarprodukt kann zur Berechnung der Lange eines Vektors
benutzt werden: |~v | =√~v • ~v =
√~v2x + ~v2y + ~v2z
Beispiel
~v =
296
, |~v | =
√√√√√ 2
96
• 2
96
=
√(2 · 2) + (9 · 9) + (6 · 6) =
√22 + 92 + 62 =
√121 = 11
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Was besagt das Ergebnis des Skalarprodukts?
Lange eines Vektors
Das Skalarprodukt kann zur Berechnung der Lange eines Vektors
benutzt werden: |~v | =√~v • ~v =
√~v2x + ~v2y + ~v2z
Beispiel
~v =
296
, |~v | =
√√√√√ 2
96
• 2
96
=
√(2 · 2) + (9 · 9) + (6 · 6) =
√22 + 92 + 62 =
√121 = 11
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Was besagt das Ergebnis des Skalarprodukts?
Lange eines Vektors
Das Skalarprodukt kann zur Berechnung der Lange eines Vektors
benutzt werden: |~v | =√~v • ~v =
√~v2x + ~v2y + ~v2z
Beispiel
~v =
296
, |~v | =
√√√√√ 2
96
• 2
96
=
√(2 · 2) + (9 · 9) + (6 · 6) =
√22 + 92 + 62 =
√121 = 11
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Skalarprodukt
Was besagt das Ergebnis des Skalarprodukts?
Lange eines Vektors
Das Skalarprodukt kann zur Berechnung der Lange eines Vektors
benutzt werden: |~v | =√~v • ~v =
√~v2x + ~v2y + ~v2z
Beispiel
~v =
296
, |~v | =
√√√√√ 2
96
• 2
96
=
√(2 · 2) + (9 · 9) + (6 · 6) =
√22 + 92 + 62 =
√121 = 11
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kreuzprodukt
Kreuzprodukt
Allgemein abc
× x
yz
=
(b · z)− (c · y)(c · x)− (a · z)(a · y)− (b · x)
Beispiel 2
5−1
× 3
94
=
(5 · 4)− (−1 · 9)(−1 · 3)− (2 · 4)(2 · 9)− (5 · 3)
=
20− (−9)−3− 818− 15
=
29−11
3
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kreuzprodukt
Kreuzprodukt
Allgemein abc
× x
yz
=
(b · z)− (c · y)(c · x)− (a · z)(a · y)− (b · x)
Beispiel 2
5−1
× 3
94
=
(5 · 4)− (−1 · 9)(−1 · 3)− (2 · 4)(2 · 9)− (5 · 3)
=
20− (−9)−3− 818− 15
=
29−11
3
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kreuzprodukt
Kreuzprodukt
Allgemein abc
× x
yz
=
(b · z)− (c · y)(c · x)− (a · z)(a · y)− (b · x)
Beispiel 2
5−1
× 3
94
=
(5 · 4)− (−1 · 9)(−1 · 3)− (2 · 4)(2 · 9)− (5 · 3)
=
20− (−9)−3− 818− 15
=
29−11
3
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kreuzprodukt
Kreuzprodukt
Allgemein abc
× x
yz
=
(b · z)− (c · y)(c · x)− (a · z)(a · y)− (b · x)
Beispiel 2
5−1
× 3
94
=
(5 · 4)− (−1 · 9)(−1 · 3)− (2 · 4)(2 · 9)− (5 · 3)
=
20− (−9)−3− 818− 15
=
29−11
3
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kreuzprodukt
Kreuzprodukt
Allgemein abc
× x
yz
=
(b · z)− (c · y)(c · x)− (a · z)(a · y)− (b · x)
Beispiel 2
5−1
× 3
94
=
(5 · 4)− (−1 · 9)(−1 · 3)− (2 · 4)(2 · 9)− (5 · 3)
=
20− (−9)−3− 818− 15
=
29−11
3
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kreuzprodukt
Was besagt das Ergebnis des Kreuzprodukts?
Was hat man nun vom Kreuzprodukt?
Es entsteht ein Vektor, der orthogonal zu den beiden Vektoren ist,zwischen denen das Kreuzprodukt gebildet worden ist.
Wofur ist das wichtig?
Die Normalen von Flachen konnen so zum Beispiel berechnetwerden. Normalen benotigt man, damit man weiß, welche Seiteeiner Flache die Vorderseite ist (wichtig z. B. fur Beleuchtung).
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kreuzprodukt
Wofur ist es wichtig, die Vorderseite von Flachen zukennen?
Der Winkel zwischen dem Vektor von Lichtquelle zu einer Flacheund der Normalen ist wichtig fur die Beleuchtung!
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kreuzprodukt
Wofur ist es wichtig, die Vorderseite von Flachen zukennen?
Der Winkel zwischen dem Vektor von Lichtquelle zu einer Flacheund der Normalen ist wichtig fur die Beleuchtung!
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kreuzprodukt
Kreuzprodukt und Skalarprodukt
Beispiel: Kollisionserkennung in einem Computerspiel
1 Berechne fur jede Flache mit dem Kreuzprodukt die Normale
2 Normalisiere die Normalen (das sind sie nicht automatisch!),um sie auch fur Beleuchtung nehmen zu konnen
3 Teste mit Skalarprodukt, ob zwei Korper schon ineinandersind: Vektor von einem Eckpunkt eines Korpers auf beliebigenPunkt auf Flache des zweiten Korpers.
4 Sind sie ineinander: Korper nicht weiterbewegen
5 Sind sie nicht ineinander: Korper durfen sich weiterbewegen
Aber: Das ist sehr rechenintensiv
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Normalisierung von Vektoren
Wie normalisiert man einen Vektor?
Einheitsvektoren
Ein normalisierter Vektor (Einheitsvektor) ~v hat die Lange 1.Man schreibt: |~v | = 1.
Zu jedem Vektor ~a kann ein Einheitsvektor ~v berechnetwerden, der in die selbe Richtung wie ~a zeigt und fur den gilt:|~v | = 1.
Viele Berechnungen werden durch die Verwendung vonEinheitsvektoren einfacher.
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Normalisierung von Vektoren
Wie normalisiert man einen Vektor?
Einheitsvektoren
Ein normalisierter Vektor (Einheitsvektor) ~v hat die Lange 1.Man schreibt: |~v | = 1.
Zu jedem Vektor ~a kann ein Einheitsvektor ~v berechnetwerden, der in die selbe Richtung wie ~a zeigt und fur den gilt:|~v | = 1.
Viele Berechnungen werden durch die Verwendung vonEinheitsvektoren einfacher.
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Normalisierung von Vektoren
Wie normalisiert man einen Vektor?
Einheitsvektoren
Ein normalisierter Vektor (Einheitsvektor) ~v hat die Lange 1.Man schreibt: |~v | = 1.
Zu jedem Vektor ~a kann ein Einheitsvektor ~v berechnetwerden, der in die selbe Richtung wie ~a zeigt und fur den gilt:|~v | = 1.
Viele Berechnungen werden durch die Verwendung vonEinheitsvektoren einfacher.
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Normalisierung von Vektoren
Berechnung von Einheitsvektoren
Allgemein
Der Einheitsvektor ~v zum Vektor ~a berechnet wie folgt:
~v = 1|~a| ·~a = 1√
~a•~a·~a
Beispiel
~a =
978
, ~v = 1√√√√√√√
978
•
978
·
978
= 1√92+72+82
·
978
= 0, 071 ·
978
=
0, 6390, 4970, 568
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Normalisierung von Vektoren
Berechnung von Einheitsvektoren
Allgemein
Der Einheitsvektor ~v zum Vektor ~a berechnet wie folgt:
~v = 1|~a| ·~a = 1√
~a•~a·~a
Beispiel
~a =
978
, ~v = 1√√√√√√√
978
•
978
·
978
= 1√92+72+82
·
978
= 0, 071 ·
978
=
0, 6390, 4970, 568
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Normalisierung von Vektoren
Berechnung von Einheitsvektoren
Allgemein
Der Einheitsvektor ~v zum Vektor ~a berechnet wie folgt:
~v = 1|~a| ·~a = 1√
~a•~a·~a
Beispiel
~a =
978
, ~v = 1√√√√√√√
978
•
978
·
978
= 1√92+72+82
·
978
= 0, 071 ·
978
=
0, 6390, 4970, 568
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Normalisierung von Vektoren
Berechnung von Einheitsvektoren
Allgemein
Der Einheitsvektor ~v zum Vektor ~a berechnet wie folgt:
~v = 1|~a| ·~a = 1√
~a•~a·~a
Beispiel
~a =
978
, ~v = 1√√√√√√√
978
•
978
·
978
= 1√92+72+82
·
978
= 0, 071 ·
978
=
0, 6390, 4970, 568
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Normalisierung von Vektoren
Berechnung von Einheitsvektoren
Allgemein
Der Einheitsvektor ~v zum Vektor ~a berechnet wie folgt:
~v = 1|~a| ·~a = 1√
~a•~a·~a
Beispiel
~a =
978
, ~v = 1√√√√√√√
978
•
978
·
978
= 1√92+72+82
·
978
= 0, 071 ·
978
=
0, 6390, 4970, 568
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Normalisierung von Vektoren
Berechnung von Einheitsvektoren
Allgemein
Der Einheitsvektor ~v zum Vektor ~a berechnet wie folgt:
~v = 1|~a| ·~a = 1√
~a•~a·~a
Beispiel
~a =
978
, ~v = 1√√√√√√√
978
•
978
·
978
= 1√92+72+82
·
978
= 0, 071 ·
978
=
0, 6390, 4970, 568
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Normalisierung von Vektoren
Berechnung von Einheitsvektoren
Warum Skalarprodukt des Vektors mit sich selbst und dannWurzel? Was steckt dahinter?
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Hello World in C++
Erste Schritte mit C++
Allgemeines zu C++
C++ ist objektorientiert
Anders als in Java besteht eine Klasse aus 2 Dateien:
.h-Datei: Spezifikation einer Klasse mit Methodensignaturen
.cpp-Datei: Die Implementation einer Klasse
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Hello World in C++
Erste Schritte mit C++
Allgemeines zu C++
C++ ist objektorientiert
Anders als in Java besteht eine Klasse aus 2 Dateien:
.h-Datei: Spezifikation einer Klasse mit Methodensignaturen
.cpp-Datei: Die Implementation einer Klasse
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Hello World in C++
Erste Schritte mit C++
Allgemeines zu C++
C++ ist objektorientiert
Anders als in Java besteht eine Klasse aus 2 Dateien:
.h-Datei: Spezifikation einer Klasse mit Methodensignaturen
.cpp-Datei: Die Implementation einer Klasse
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Hello World in C++
Erste Schritte mit C++
Allgemeines zu C++
C++ ist objektorientiert
Anders als in Java besteht eine Klasse aus 2 Dateien:
.h-Datei: Spezifikation einer Klasse mit Methodensignaturen
.cpp-Datei: Die Implementation einer Klasse
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Hello World in C++
Hello World in C++
Erste Schritte in C++
Fur einfache Programme benotigen wir keineObjektorientiertheit.
Es reicht eine cpp-Datei, da wir keine Klasse spezifizieren.
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Hello World in C++
Hello World in C++
Erste Schritte in C++
Fur einfache Programme benotigen wir keineObjektorientiertheit.
Es reicht eine cpp-Datei, da wir keine Klasse spezifizieren.
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Hello World in C++
HelloWorld in C++
#include <iostream >
using namespace std;
int main() {
cout << "Hello World!" << endl;
return 0;
}
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kurze Einfuhrung in C++
Die Header
.h-Datei
Enthalt nur die Methodensignaturen (Ruckgabewert,Methodenname und Ubergabeparameter) undMembervariablen
Beispiel fur Methodensignatur: void set(int index, float value);
Achtung: Nach der letzten } muß noch ein ; eingefugt werden!
class Vector3D {
public: //Uberall sichtbare Methoden
protected: //Nur hier und hiervon abgel. Klassen
private: //Nur in dieser Klasse verfugbar
};
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kurze Einfuhrung in C++
Die Header
.h-Datei
Enthalt nur die Methodensignaturen (Ruckgabewert,Methodenname und Ubergabeparameter) undMembervariablen
Beispiel fur Methodensignatur: void set(int index, float value);
Achtung: Nach der letzten } muß noch ein ; eingefugt werden!
class Vector3D {
public: //Uberall sichtbare Methoden
protected: //Nur hier und hiervon abgel. Klassen
private: //Nur in dieser Klasse verfugbar
};
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kurze Einfuhrung in C++
Die Header
.h-Datei
Enthalt nur die Methodensignaturen (Ruckgabewert,Methodenname und Ubergabeparameter) undMembervariablen
Beispiel fur Methodensignatur: void set(int index, float value);
Achtung: Nach der letzten } muß noch ein ; eingefugt werden!
class Vector3D {
public: //Uberall sichtbare Methoden
protected: //Nur hier und hiervon abgel. Klassen
private: //Nur in dieser Klasse verfugbar
};
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kurze Einfuhrung in C++
Beispiel: Auto.h
class Auto {
public:
int leistung;
float vMax;
Auto ();
Auto(int l, float v);
private:
void calcVMax ();
};
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kurze Einfuhrung in C++
Die CPP-Dateien
.cpp-Datei
Hier befindet sich die eigentliche Implementation.
Jede .cpp-Datei hat eine .h-Datei.
Die in der .h-Datei spezifizierten Methodensignaturen mussenexakt ubernommen werden.
Methoden werden in der cpp-Datei vor Ihrem Namen noch mitdem Klassennamen markiert:
void Auto:: calcVMax () {
vMax = (float )(1.5f * leistung );
}
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kurze Einfuhrung in C++
Die CPP-Dateien
.cpp-Datei
Hier befindet sich die eigentliche Implementation.
Jede .cpp-Datei hat eine .h-Datei.
Die in der .h-Datei spezifizierten Methodensignaturen mussenexakt ubernommen werden.
Methoden werden in der cpp-Datei vor Ihrem Namen noch mitdem Klassennamen markiert:
void Auto:: calcVMax () {
vMax = (float )(1.5f * leistung );
}
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kurze Einfuhrung in C++
Die CPP-Dateien
.cpp-Datei
Hier befindet sich die eigentliche Implementation.
Jede .cpp-Datei hat eine .h-Datei.
Die in der .h-Datei spezifizierten Methodensignaturen mussenexakt ubernommen werden.
Methoden werden in der cpp-Datei vor Ihrem Namen noch mitdem Klassennamen markiert:
void Auto:: calcVMax () {
vMax = (float )(1.5f * leistung );
}
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kurze Einfuhrung in C++
Die CPP-Dateien
.cpp-Datei
Hier befindet sich die eigentliche Implementation.
Jede .cpp-Datei hat eine .h-Datei.
Die in der .h-Datei spezifizierten Methodensignaturen mussenexakt ubernommen werden.
Methoden werden in der cpp-Datei vor Ihrem Namen noch mitdem Klassennamen markiert:
void Auto:: calcVMax () {
vMax = (float )(1.5f * leistung );
}
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Kurze Einfuhrung in C++
Beispiel: Auto.cpp
#include "Auto.h"
Auto::Auto() {
leistung = 0;
vMax = 0.f;
}
Auto::Auto(int l, float v) {
leistung = l;
vMax = v;
}
void Auto:: calcVMax () {
vMax = (float )(1.5f * leistung );
}
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Die Klasse Vector3D
Allgemeines
Reprasentation eines Vektors
Die Werte des Vektors werden in einem Array gespeichert mitder Lange 3.
Die Klasse enthalt uberladene Operatoren (z. B. +=) undnormale Methoden, die Vektoroperationen ermoglichen.
protected:
float mElement [3];
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Die Klasse Vector3D
Allgemeines
Reprasentation eines Vektors
Die Werte des Vektors werden in einem Array gespeichert mitder Lange 3.
Die Klasse enthalt uberladene Operatoren (z. B. +=) undnormale Methoden, die Vektoroperationen ermoglichen.
protected:
float mElement [3];
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Die Klasse Vector3D
length und normalize in Vector
Ziel: Zwei Methoden zur Berechnung der Lange und zurNormalisierung eines Vektors implementieren.
Erste Uberlegungen
normalize-Methode benotigt length-Methode
Also zuerst length implementieren, dann normalize
Uberlegungen zur length-Methode
Die Wurzel aus dem Skalarprodukt des Vektors mit sich selbstmuß berechnet und zuruckgegeben werden.
Uberlegungen zur normalize-Methode
Der Skalierungsfaktor muß berechnet und die Koordinaten desVektors mit diesem Faktor multipliziert werden.
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Die Klasse Vector3D
length und normalize in Vector
Ziel: Zwei Methoden zur Berechnung der Lange und zurNormalisierung eines Vektors implementieren.
Erste Uberlegungen
normalize-Methode benotigt length-Methode
Also zuerst length implementieren, dann normalize
Uberlegungen zur length-Methode
Die Wurzel aus dem Skalarprodukt des Vektors mit sich selbstmuß berechnet und zuruckgegeben werden.
Uberlegungen zur normalize-Methode
Der Skalierungsfaktor muß berechnet und die Koordinaten desVektors mit diesem Faktor multipliziert werden.
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Die Klasse Vector3D
length und normalize in Vector
Ziel: Zwei Methoden zur Berechnung der Lange und zurNormalisierung eines Vektors implementieren.
Erste Uberlegungen
normalize-Methode benotigt length-Methode
Also zuerst length implementieren, dann normalize
Uberlegungen zur length-Methode
Die Wurzel aus dem Skalarprodukt des Vektors mit sich selbstmuß berechnet und zuruckgegeben werden.
Uberlegungen zur normalize-Methode
Der Skalierungsfaktor muß berechnet und die Koordinaten desVektors mit diesem Faktor multipliziert werden.
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Die Klasse Vector3D
length und normalize in Vector
Ziel: Zwei Methoden zur Berechnung der Lange und zurNormalisierung eines Vektors implementieren.
Erste Uberlegungen
normalize-Methode benotigt length-Methode
Also zuerst length implementieren, dann normalize
Uberlegungen zur length-Methode
Die Wurzel aus dem Skalarprodukt des Vektors mit sich selbstmuß berechnet und zuruckgegeben werden.
Uberlegungen zur normalize-Methode
Der Skalierungsfaktor muß berechnet und die Koordinaten desVektors mit diesem Faktor multipliziert werden.
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Die Klasse Vector3D
Implementierung...
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Einfuhrung
Allgemeines
GLUT & OpenGL
Wir benutzen als Fenstermanager und spater furEingabebehandlung GLUT.
GLUT baut auf OpenGL auf und bietet einige Funktionen, dieden Umgangmit OpenGL komfortabler machen.
Also:
#include <GL/glut.h>
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Einfuhrung
Allgemeines
GLUT & OpenGL
Wir benutzen als Fenstermanager und spater furEingabebehandlung GLUT.
GLUT baut auf OpenGL auf und bietet einige Funktionen, dieden Umgangmit OpenGL komfortabler machen.
Also:
#include <GL/glut.h>
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Einfuhrung
Allgemeines
GLUT & OpenGL
Wir benutzen als Fenstermanager und spater furEingabebehandlung GLUT.
GLUT baut auf OpenGL auf und bietet einige Funktionen, dieden Umgangmit OpenGL komfortabler machen.
Also:
#include <GL/glut.h>
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Einfuhrung
Allgemeines
Aufbau eines Programms mit GLUT
void display(void) {
//Alles, was gezeichnet werden soll
}
void init(void) {
//Initialisierung, z. B.
//Hintergrundfarbe und
//Projektionsmodell
}
int main(int argc , char** argv) {
//Aufrufe der einzelnen Methoden
}
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Einfuhrung
main-Methode
int main(int argc , char** argv) {
glutInit (&argc , argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB );
glutInitWindowSize (500, 500);
glutInitWindowPosition (100, 100);
glutCreateWindow ("circle");
init ();
glutDisplayFunc(display );
glutMainLoop ();
return 0;
}
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Einen Kreis malen
Eine einfache OpenGL-Aufgabe
Aufgabe
Male mit OpenGL einen Kreis. Berechne dazu mit Hilfe einerSchleife x- und y-Position eines jeden Punktes auf dem Kreis undzeichne diese Punkte.
Parameterdarstellung eines Einheitskreises
x- und y-Positionen der Punkte auf dem Kreis werden einenParameter φ ausgedruckt, der die Werte 0 ≤ φ < 2 ∗ πannimmt.
x = cosφ
y = sinφ
Wenn man 0 ≤ φ < 2 ∗ π in diskreten Schritten per Schleifeablauft, kann man das sehr gut programmieren.
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Einen Kreis malen
Eine einfache OpenGL-Aufgabe
Aufgabe
Male mit OpenGL einen Kreis. Berechne dazu mit Hilfe einerSchleife x- und y-Position eines jeden Punktes auf dem Kreis undzeichne diese Punkte.
Parameterdarstellung eines Einheitskreises
x- und y-Positionen der Punkte auf dem Kreis werden einenParameter φ ausgedruckt, der die Werte 0 ≤ φ < 2 ∗ πannimmt.
x = cosφ
y = sinφ
Wenn man 0 ≤ φ < 2 ∗ π in diskreten Schritten per Schleifeablauft, kann man das sehr gut programmieren.
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Einen Kreis malen
Eine einfache OpenGL-Aufgabe
Aufgabe
Male mit OpenGL einen Kreis. Berechne dazu mit Hilfe einerSchleife x- und y-Position eines jeden Punktes auf dem Kreis undzeichne diese Punkte.
Parameterdarstellung eines Einheitskreises
x- und y-Positionen der Punkte auf dem Kreis werden einenParameter φ ausgedruckt, der die Werte 0 ≤ φ < 2 ∗ πannimmt.
x = cosφ
y = sinφ
Wenn man 0 ≤ φ < 2 ∗ π in diskreten Schritten per Schleifeablauft, kann man das sehr gut programmieren.
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1
pgflastimage
Organisatorisches Mathematik C++ und Vector-Klasse OpenGL
Einen Kreis malen
Eine einfache OpenGL-Aufgabe
Aufgabe
Male mit OpenGL einen Kreis. Berechne dazu mit Hilfe einerSchleife x- und y-Position eines jeden Punktes auf dem Kreis undzeichne diese Punkte.
Parameterdarstellung eines Einheitskreises
x- und y-Positionen der Punkte auf dem Kreis werden einenParameter φ ausgedruckt, der die Werte 0 ≤ φ < 2 ∗ πannimmt.
x = cosφ
y = sinφ
Wenn man 0 ≤ φ < 2 ∗ π in diskreten Schritten per Schleifeablauft, kann man das sehr gut programmieren.
Diana, Dominik und Gerrit Arbeitsgruppe Computergrafik
Ubungsstunde 2 zu Computergrafik 1