Gouraud-Schattierung Phong-Schattierung
|
|
- Paul Giese
- vor 5 Jahren
- Abrufe
Transkript
1 Aufgabe 12: Phong- und Gouraudschattierung a) Der Hauptunterschied zwischen der Phong- und der Gouraud-Schattierung besteht darin, dass nach Gouraud die Lichtintensitäten nur an den Ecken bzw. Kanten der Objekte berechnet werden. Alle Pixelintensitäten des Fragmentes zwischen diesen Begrenzungen unterliegen lediglich einer (linearen) Interpolation. Da Phong aber für jedes Pixel die Lichtintensität explizit ermittelt, weil die Normalen zwischen den Begrenzungen interpoliert werden, können Glanzlichter, die inmitten eines Objektes auftreten, korrekt dargestellt werden. Zwei Beispiele sollen dies untermauern: Zuerst der Fall, dass durch eine unpassende Tessellation eine T-Verbindung entstandt ist: Die Lichtintensität an den Punkten A bis D der Objekthülle sei identisch, in der Mitte, bei E, sei ein Spotlight. In der linken Abbildung, die mit der Gouraud-Schattierung erzeugt wurde, ist das untere Dreieck uni grau gefärbt, da die Interpolation der Eckwerte B, C und D das Glanzlicht in der Mitte nicht berücksichtigen kann, weil B, C und D gleich groß sind und jeder zwischen ihnen gemittelte Wert stets identisch ist. Die Phong-Schattierung in der rechten Abbildung zeigt dagegen das erwartete Resultat, da sich die Normalen der Eckpunkte alle voneinander unterscheiden, demzufolge auch die interpolierten Normalen der eingeschlossenen Flächen, woraus realitätsnahe Lichtintensitäten folgen: A A B E D B E D C Gouraud-Schattierung Phong-Schattierung Ein weiterer Fall, der die visuelle Überlegenheit der Phong-Schattierung zeigt, ist ein sehr großes Objekt, in dessen Mitte ein Glanzlicht ist. Bei der Gouraud-Schattierung werden erneut nur die Lichtintensitäten an den Ecken gemessen, die Interpolation liefert im schlechtesten Fall eine einfarbige Fläche. Wenn die Phong- Schattierung die Normalen interpoliert, kann die Lichtintensität einigermaßen realistisch bestimmt werden. C Gouraud-Schattierung Phong-Schattierung Ich möchte noch anmerken, dass selbst die Phong-Schattierung nicht perfekt ist. Sie geht von planaren Flächen aus, was z.b. bei tessellierten Kugeln nicht der Fall ist. Wie man auch mit der schnelleren Gouraud- Schattierung ansprechende Ergebnisse erzielen kann, wie im nächsten Aufgabenteil erklärt. Anmerkung: Die abgebildeten Grafiken entstammen einem Zeichenprogramm und nicht einer realen Umsetzung der Verfahren. Eventuell Farbverlaufsabweichungen sind daher vorprogrammiert aber unvermeidlich. Computergrafik II Seite 1 von 14
2 b) Ich habe soeben gezeigt, dass die Phong-Schattierung von der visuellen Qualität her das überlegene Modell ist. Leider ist die Ermittlung der Lichtintensität über interpolierte Normalen sehr aufwändig - wenn diese für jedes Pixel durchgeführt werden muss, dann hängt die Laufzeit von der Rastergröße des Bildschirmfensters ab. Die Gouraud- und die Flat-Schattierung haben eine Komplexität, die linear mit der Anzahl der Eckpunkte (Gouraud) bzw. Flächen (Flat) wächst, für wenige, aber große Polygone ergibt sich daraus ein erheblicher Geschwindigkeitszuwachs. Viele Renderingsysteme setzen aus diesem Grunde die Gouraud-Schattierung (oder das einfache Flat- Shading) ein, da es sehr einfach zu implementieren und äußerst schnell ist. Ist man darauf angewiesen, eine sehr hohe Qualität zu erzielen, so kann man seine Objekte derart tessellieren, dass die Polygone in etwa nur 1 Pixel groß werden. Weil dann jeder Bildschirmpixel gleichzeitig ein Eckpunkt ist und man für diese die Lichtintensität berechnet, hat man indirekt den gleichen Effekt wie bei der Phong-Schattierung erzielt. Natürlich liegt dann auch der Rechenaufwand in der gleichen Dimension. Computergrafik II Seite 2 von 14
3 Aufgabe 13: Die Rendering-Gleichung von Kajiya Die von Kajiya auf der SIGGRAPH 1986 vorgestellte rendering equation hat die Form: I [ dx' '] ( x, x' ) = g( x, x' ) ε( x, x' ) + ρ( x, x', x'' ) I( x', x'' ) Die Geometrieterme ergeben sich aus S g ( x, x' ) 0 = 1 2 r r = x x' wenn x und x' voneinander verdeckt sind sonst und haben dann in etwa die Größenordnung: - g ( A, D) = 0, da Hindernisse zwischen der direkten Verbindung von A und D stehen (der Spiegel und die aufrechte Fläche), C = g C B, da g nur vom Abstand der Punkte B und C abhängt und r deshalb gleich ist - g ( B ) (, ) - g ( B, C) > g( A, B) > g( A, C) > g( A, D), da ich diese Abstandsverhältnisse in der Grafik vermute - Alle Terme dürften, je nach Maßstab der Grafik, relativ klein sein und wahrscheinlich im Bereich [ 0,1] befinden Emittiertes Licht fließt über den ε-term in die Gleichung ein: ε ( x, x' ) = 0 wenn x und > 0 x' voneinander verdeckt sind x' kein Licht emittiert sonst oder Besonders die Bedingung x emittiert kein Licht ist interessant, da A die einzige Lichtquelle in der Szene ist. Es ergibt sich: ε ( A, B) = ε( A, C) = ε ( A, D) = ε ( B, C) = ε ( C, B) = 0 Da ich aber vermute, dass Buchstabendreher in der Aufgabenstellung enthalten sind, gilt für die Paare (A,B) bzw. (A,C): ε ( B, A) ε( C, A) > 0 Zwischen A und D liegt ein Hindernis und weder B noch C emittieren Licht: ε ( D, A) = ε( B, C) = ε ( C, B) = 0 Computergrafik II Seite 3 von 14
4 Der scattering term beschäftigt sich mit reflektiertem Licht: ρ ( x, x', x'' ) = 0 > 0 wenn x'' weder emittiert noch reflektiert oder x' nicht reflektiert sonst Alle Terme enthalten für x die Lichtquelle A. Weil die verwendeten Materialien über eine gewisse Reflektion verfügen (der Spiegel sehr stark, die Wände eher schwach), sind alle Terme größer Null. Sowohl B als auch B liegen auf der gleichen Fläche, sie werden daher vermutlich die gleichen diffusen Eigenschaften besitzen, der einzige Unterschied zwischen ihnen liegt im Einfallswinkel der Lichtquelle A. ρ ( C, B, A) ρ( C, B', A) ρ( C', B, A) ρ( C', B', A) = recht klein Im Bild sind die Terme dermaßen klein, dass sie keine visuelle Auswirkung haben und lediglich von mathematisch-theoretischer Bedeutung sind. Generell müssten die angegebenen Terme, die das emittierte Licht beschreiben, größer als die reflektiven sein, wenn beide auf die Lichtquelle verweisen: ε ( x, A) ρ( x, x', A) Computergrafik II Seite 4 von 14
5 Aufgabe 14: Prozedurale Modellierung von Oberflächennormalen Die Bedienung des Programms wird über diese Tasten realisiert: Taste Aktion ESC Programm beenden Leertaste Patch rotieren an/aus + in die Szene hineinzoomen - aus der Szene herauszoomen q zusätzliche Lichtquelle an Q zusätzliche Lichtquelle aus c rückseitige Flächen zeichnen/verstecken n Normalen anzeigen/verstecken p Wellenbewegung an/aus l Lichtquelle bewegen an/aus 1-9 Größe des Patches verändern, sehr grob (1) bis sehr fein (9), Startwert: 5 Im Screenshot sieht man, dass die bewegliche Lichtquelle als gelbe Kugel symbolisiert wird, eine Linie hilft bei der Veranschaulichung der räumlichen Position, da sie genau senkrecht auf dem Patch steht. Computergrafik II Seite 5 von 14
6 Dass der Patch wirklich nur flach ist, kann man an seiner Geometrie sehen, der optische Effekt wird allein durch die Normalen erreicht: Für die Berechnung der Normalen gibt es verschiedene Möglichkeiten, die zu mehr oder weniger guten Ergebnissen führen. Grundsätzlich ist es so, dass für jeden Punkt p, für den die Normale n ermittelt werden soll, sowohl ein Vektor v, der von der Patchmitte zu p zeigt und die Länge d von v errechnet werden müssen: v = p O d = v Glücklicherweise liegt die Mitte des Patches im Koordinatenursprung, sodass O = 0 und v = p gilt. Um aus diesen beiden Werten die Normale n herzuleiten, experimentierte ich anfänglich mit Kugelkoordinaten, sodass Gleichungen dieser Art entstanden: α = d k + offset w = n = v v w cos α x sinα z w cos α Hier tauchen allerdings Probleme auf, da n y negativ werden kann. Natürlich ist es möglich, durch Absolutwertbildung oder Winkelverschiebung das zu verhindern, allerdings befriedigte mich das visuelle Resultat nicht. Ich möchte noch kurz anmerken, dass offset für die Wellenbewegung zuständig ist, während k eine subjektiv gewählte Konstante darstellt, die die Wellenlänge beeinflusst. Es stellte sich heraus, dass k=20 vernünftige Ergebnisse liefert. Computergrafik II Seite 6 von 14
7 Meine implementierte Lösung beruht einem ganz ähnlichen Ansatz. Ich setze den y-anteil immer auf 1 (d.h. ich lasse die Sinus-Funktion außer Acht). Nun muss noch dafür gesorgt werden, dass n auch wirklich die Länge 1 hat, weshalb im Anschluss eine Normalisierung erforderlich ist: α = d k + offset w = m = n = v v w w m m x z cos α 1 cos α Rein physikalisch machen diese Gleichungen nicht mehr allzuviel Sinn, das visuelle Ergebnis ist dennoch überzeugend. Im Code habe ich eine Funktion WavedNormal eingeführt, die aus einem Vektor v, der einem Punkt des Patches entspricht, die dazugehörende Normale n berechnet und zurückgibt: Vector CGWave::WavedNormal(const Vector& v) const { // get distance, stretch wave length double distance = abs(v)*20; // add periode shift distance += periode_; // normalize to [0,2*PI[ // while (distance >= 2*PI) // distance -= 2*PI; // normalize point vector const Vector v_norm = v.normalized(); const double cos_dist = cos(distance); const double nx = v_norm[0]*cos_dist; const double ny = 1; // alternative: sin(distance); const double nz = v_norm[2]*cos_dist; return Vector(nx, ny, nz).normalized(); Die eigentliche Routine zum Zeichnen eines Dreieckseckpunkt inkl. Normale besteht nur noch aus zwei OpenGL-Befehlen: void CGWave::handleVertex(const Vector& v) const { // compute normal according to wave functions glnormal3dv(wavednormal(v).rep()); // send vertex glvertex3dv(v.rep()); Computergrafik II Seite 7 von 14
8 Die Darstellung der Normalen als rote Linien beruht auf der Vektoraddition: v+n n In OpenGL wird demzufolge eine Linie von v nach v+n gezeichnet: // show normals? if(shownormals_) { gldisable(gl_lighting); // lady in red glcolor3f(1,0,0); glbegin(gl_lines); c = 0; // process all vertices for (int i=0; i<2*num_+2; i++) for (int j=0; j<num_; j++) { // get vertex Vector& v = list_[c++]; // beginning from surface (small offset, though)... glvertex3d (v[0], v[1]+0.01, v[2]); //... to the end which we get by adding (stretched) normal to v glvertex3dv((v+(0.1*wavednormal(v))).rep()); v glend(); glenable(gl_lighting); Im Code sind zwei kleine Erweiterungen enthalten, die ich bisher nicht besprochen habe. Als erstes werden die Normalen nicht in ihrer vollen Länge 1 gezeichnet, da sie sonst den Patch zu sehr verdecken würden. Eine Verkürzung auf ein Zehntel umgeht dieses Problem. Zweitens störte mich, dass einige Normalen den Patch durchstießen und so auf der Rückseite des Patches unschöne vereinzelte rote Punkte auftauchten. Indem ich die Linien nicht direkt bei v beginnen lasse, sondern den y-wert minimal erhöhe, verschwinden diese Artefakte. Die letzte Teilaufgabe bestand darin, die Lichtquelle zu bewegen. Ich entschied mich dabei für eine kreisförmige Bahn, deren Koordinaten sich ergeben aus: l = winkel π bahnradius cos 180 höhe winkel π bahnradius sin 180 Wichtig ist, dass C die trigonometrischen Funktionen auf Basis von Radiant statt Grad berechnet, daher ist die Umrechnung mit π notwendig. Die Konstanten bahnradius und höhe sind auf 0,5 gesetzt worden, dies sind subjektiv angenehme Werte. Der Winkel wird vom Programmrahmen kontinuierlich erhöht und findet sich in der Variablen rot_ wieder. Mir war allerdings die Geschwindigkeit zu hoch, so dass ich sie auf ein Drittel drosselte (das ist der Fluch schneller CPUs im Zusammenspiel mit T&L-Grafikkarten ). if(lightanim_) { rot_+=2; // Animierte Lichtquellen // slow down rotation double slow_rot = rot_/3; light_position1[0] = 0.5*cos(slow_rot*PI/180.0); light_position1[1] = 0.5; light_position1[2] = 0.5*sin(slow_rot*PI/180.0); Computergrafik II Seite 8 von 14
9 Quelltext Die Header-Datei cgwave.h wurde nur minimal geändert, lediglich WavedNormal ist als konstante Memberfunktion definiert: cgwave.h: // // Computergraphik II // Prof. Dr. Juergen Doellner // Wintersemester 2001/02 // // Rahmenprogramm zu Aufgabenzettel 5 // #ifndef CG_WAVE_H #define CG_WAVE_H #include "cgapplication.h" #include "vector.h" class CGWave : public CGApplication { public: CGWave(); virtual ~CGWave(); // Ueberschreibe alle diese Ereignisse: virtual void oninit(); virtual void ondraw(); virtual void onidle(); virtual void onkey(unsigned char key); virtual void onsize(unsigned int newwidth, unsigned int newheight); // value Methode unsigned char value(int x, int z) const; private: void drawscene(); void drawobject(); void buildpatch(int detail); void handlevertex(const Vector& v) const; Vector WavedNormal(const Vector& v) const; int width_; int height_; double zoom_; double rot_; double periode_; ; bool culling_; bool run_; bool shownormals_; bool periodanim_; bool lightanim_; int num_; Vector* list_; #endif // CG_WAVE_H Computergrafik II Seite 9 von 14
10 cgwave.cpp: // // Computergraphik II // Prof. Dr. Juergen Doellner // Wintersemester 2001/02 // // Rahmenprogramm zu Aufgabenzettel 5 // #include "cgwave.h" #include "vector.h" #include <fstream.h> #include <stdlib.h> #ifndef PI const double PI = ; #endif CGWave::CGWave() { run_ = false; culling_ = false; shownormals_ = false; periodanim_ = false; lightanim_ = false; zoom_ = 1.5; periode_=0; list_ = NULL; rot_ = 180.0; buildpatch(40); CGWave::~CGWave() { static GLfloat light_position1[] = {0.0, 1.0, 0.0, 1.0; /* Point light location. */ void CGWave::drawScene() { glpushmatrix(); glrotatef(60,1,0,0); glscaled(zoom_, zoom_, zoom_); gllightfv(gl_light1, GL_POSITION, light_position1); drawobject(); // Positionieren bzw. Animieren der Lichtquelle 1 // draw light source (yellow!) glpushmatrix(); gldisable(gl_lighting); // draw vector from light source glcolor4f(1, 1, 0, 0.5); glbegin(gl_lines); glvertex3f(light_position1[0], light_position1[1], light_position1[2]); glvertex3f(light_position1[0], 0, light_position1[2]); glend(); // translate sphere that represents our light source gltranslatef(light_position1[0], light_position1[1], light_position1[2]); glutsolidsphere(0.03,10,10); glenable(gl_lighting); glpopmatrix(); glpopmatrix(); Vector CGWave::WavedNormal(const Vector& v) const { // get distance, stretch wave length double distance = abs(v)*20; Computergrafik II Seite 10 von 14
11 // add periode shift distance += periode_; // normalize to [0,2*PI[ // while (distance >= 2*PI) // distance -= 2*PI; // normalize point vector const Vector v_norm = v.normalized(); const double cos_dist = cos(distance); const double nx = v_norm[0]*cos_dist; const double ny = 1; // alternative: sin(distance); const double nz = v_norm[2]*cos_dist; return Vector(nx, ny, nz).normalized(); void CGWave::handleVertex(const Vector& v) const { // compute normal according to wave functions glnormal3dv(wavednormal(v).rep()); // send vertex glvertex3dv(v.rep()); void CGWave::drawObject() { // draw geometry int c=0; for(int j=0; j<num_; j++) { glbegin(gl_triangle_strip); // Performance // 1) handlevertex(list_[c]); c++; // 2) handlevertex(list_[c]); c++; // 3) handlevertex(list_[c]); c++; for(int i=0; i<((num_+1)*2)-3; i++) { // Rest des Strips handlevertex(list_[c]); c++; glend(); // show normals? if(shownormals_) { gldisable(gl_lighting); // lady in red glcolor3f(1,0,0); glbegin(gl_lines); c = 0; // process all vertices for (int i=0; i<2*num_+2; i++) for (int j=0; j<num_; j++) { // get vertex Vector& v = list_[c++]; // beginning from surface (small offset, though)... glvertex3d (v[0], v[1]+0.01, v[2]); //... to the end which we get by adding (stretched) normal to v glvertex3dv((v+(0.1*wavednormal(v))).rep()); glend(); glenable(gl_lighting); void CGWave::buildPatch(int detail) { // In Dreiecken tessellierten Fläche if(list_) delete list_; const int points = (detail)*(4+((detail-1)*2)); Computergrafik II Seite 11 von 14
12 list_ = new Vector[points]; double offset = 1.0/detail; double x; double z; num_ = detail; int c = 0; for(int j=0; j<detail; j++) { // passend zu Triangle-Strip (s.o.) x = -0.5; z = (j+1)*offset; list_[c] = Vector(x,0,z); c++; x = -0.5; z = j*offset; list_[c] = Vector(x,0,z); c++; x = offset; z = (j+1)*offset; list_[c] = Vector(x,0,z); c++; for(int i=0; i<detail; ) { if( (c%2)!=0) { x = (i+1)*offset; z = (j)*offset; i++; else { x = (i+1)*offset; z = (j+1)*offset; list_[c] = Vector(x,0,z); c++; void CGWave::onInit() { // OpenGL Lichtquelle 0 static GLfloat light_diffuse[] = {0.7, 0.8, 0.5, 1.0; static GLfloat light_position[] = {0.0, 1.0, 0.0, 1.0; gllightfv(gl_light0, GL_DIFFUSE, light_diffuse); gllightfv(gl_light0, GL_POSITION, light_position); // glenable(gl_light0); // wenn T&L nicht unterstützt // OpenGL Lichtquelle 1 static GLfloat light_diffuse1[] = {0.7, 0.8, 1.0, 1.0; /* Diffuse light. */ static GLfloat light_specular1[] = {0.6, 0.8, 0.6, 1.0; /* Positional light source */ gllightfv(gl_light1, GL_DIFFUSE, light_diffuse1); gllightfv(gl_light1, GL_SPECULAR, light_specular1); gllightfv(gl_light1, GL_POSITION, light_position1); glenable(gl_light1); glenable(gl_lighting); // OpenGL Material static GLfloat mat_specular[] = {0.8, 0.8, 0.8, 1.0; /* Material property. */ glmaterialf(gl_front, GL_SHININESS, 32); glmaterialfv(gl_front, GL_SPECULAR, mat_specular); // automatische Normalisierung glenable(gl_normalize); // Tiefen Test aktivieren glenable(gl_depth_test); // Blending aktivieren glenable(gl_blend); glblendfunc(gl_src_alpha, GL_ONE_MINUS_SRC_ALPHA); // Smooth Schattierung aktivieren glshademodel(gl_smooth); // glshademodel(gl_flat); // Projection glmatrixmode(gl_projection); gluperspective(60.0, 1.0, 2.0, 50.0); Computergrafik II Seite 12 von 14
13 // LookAt tesselieren glmatrixmode(gl_modelview); glulookat( 0.0, 0.0, 4.0, // from (0,0,4) 0.0, 0.0, 0.0, // to (0,0,0) 0.0, 1.0, 0.); // up glrotatef(-25, 0.0, 1.0, 0.0); glclearcolor(0.9,0.9,0.9,1.0); void CGWave::onSize(unsigned int newwidth,unsigned int newheight) { width_ = newwidth; height_ = newheight; glmatrixmode(gl_projection); glviewport(0, 0, width_ - 1, height_ - 1); glloadidentity(); gluperspective(40.0,float(width_)/float(height_),2.0, 100.0); glmatrixmode(gl_modelview); void CGWave::onKey(unsigned char key) { switch (key) { case 27: { exit(0); break; case + : { zoom_*= 1.1; break; case - : { zoom_*= 0.9; break; case : { run_ =!run_; break; case q : { glenable(gl_light0); break; case Q : { gldisable(gl_light0); break; case c : { culling_ =!culling_; break; case n : { shownormals_ =!shownormals_; break; case p : { periodanim_ =!periodanim_; break; case y : { glpolygonmode(gl_front_and_back, GL_LINE); break; case x : { glpolygonmode(gl_front_and_back, GL_FILL); break; case l : { lightanim_ =!lightanim_; break; case 1 : { buildpatch(1); break; case 2 : { buildpatch(2); break; case 3 : { buildpatch(5); break; case 4 : { buildpatch(10); break; case 5 : { buildpatch(20); break; case 6 : { buildpatch(40); break; case 7 : { buildpatch(50); break; case 8 : { buildpatch(100); break; case 9 : { buildpatch(200); break; // netter Versuch ondraw(); void CGWave::onIdle() { if(periodanim_) { // Periodische Wellenbewegung periode_ -= 0.05; if (periode_ < 0 ) periode_ += 2*PI; if(lightanim_) { rot_+=2; // Animierte Lichtquellen // slow down rotation double slow_rot = rot_/3; light_position1[0] = 0.5*cos(slow_rot*PI/180.0); light_position1[1] = 0.5; light_position1[2] = 0.5*sin(slow_rot*PI/180.0); if (run_) // Simple Rotation glrotatef(.5, 0.0, 1.0, 0.0); // Redraw ondraw(); void CGWave::onDraw() { glclear(gl_color_buffer_bit GL_DEPTH_BUFFER_BIT); Computergrafik II Seite 13 von 14
14 if (culling_) glenable(gl_cull_face); drawscene(); gldisable(gl_cull_face); // Nicht vergessen! Front- und Back-Buffer tauschen: swapbuffers(); // Hauptprogramm int main(int argc, char* argv[]) { // Erzeuge eine Instanz der Beispiel-Anwendung: CGWave sample; cout << "Tastenbelegung:" << endl << "ESC Programm beenden" << endl << "Leertaste Objekt drehen" << endl << "+ Hineinzoomen" << endl << "- Herauszoomen" << endl << "n Normalen anzeigen/verbergen" << endl << "p Wellen animieren an/aus" << endl << "l Lichtquelle bewegen" << endl << "q zweite Lichtquelle an" << endl << "Q zweite Lichtquelle aus" << endl << "y Drahtgittermodell" << endl << "x Flaechen ausfuellen" << endl << "1 bis 9 Tessellationsgrad (1 - ungenau, schnell 9 - sehr exakt, langsam)" << endl; // Starte die Beispiel-Anwendung: sample.start("stephan Brumme, ", true, 512, 512); return(0); Computergrafik II Seite 14 von 14
Der Unterschied zwischen beiden Modellen liegt lediglich in der Berechnung des spekularen Anteils, der sich bei Phong aus
Aufgabe 9: Lokale Beleuchtungsmodelle von Phong und Blinn Der Unterschied zwischen beiden Modellen liegt lediglich in der Berechnung des spekularen Anteils, der sich bei Phong aus I s k s ( R V ) n errechnet,
Beleuchtung. Matthias Nieuwenhuisen
Beleuchtung Matthias Nieuwenhuisen Überblick Warum Beleuchtung? Beleuchtungsmodelle Lichtquellen Material Reflexion Shading Warum Beleuchtung? Tiefeneindruck Realitätsnähe: Reflexionen Spiegelungen Schatten
Licht. Elektromagnetische Strahlung Emitter > Reflektor -> Auge. Sichtbares Spektrum: 400nm 700nm. Universität Frankfurt
Licht Elektromagnetische Strahlung Emitter > Reflektor -> Auge Sichtbares Spektrum: 400nm 700nm Farbwahrnehmung Farbbeschreibung I Farbton - rot, gelb, blau,... Helligkeit Nähe zu schwarz oder weiss Sättigung
CGR I Beleuchtung und Schattierung
CGR I Beleuchtung und Schattierung SS 2004 Michael Haller Medientechnik und -design Ankündigung 25.Mai (HEUTE!!), 18:00 HS1 Hr. Riegler, Firma Sproing 03. Juni, 17:30 HS1 Prof. Dieter Schmalstieg, TU Wien
2.10 Lichtquellen und Beleuchtung
2.10 Lichtquellen und void glshademodel(glenum model) - Setzt das angegebene Shading Model (GL_FLAT oder GL_SMOOTH) 2_4-1 2.10 Lichtquellen und Lokales smodell in OpenGL für n Lichtquellen k s 2_4-2 2.10
direction normal = direction = Übungsblatt 9 Stephan Brumme 26.Februar 2002 Matrikelnr , 5.Semester Aufgabe 23
Aufgabe 23 Die Bedienung ist auf 7 Tasten reduziert: Die Funktion Taste ESC Leertaste Aktion Programm beenden Patch rotieren an/aus + in die Szene hineinzoomen - aus der Szene herauszoomen 1 starre Lichtquelle
Lichtquellen und Beleuchtung
void glshademodel(glenum model) - Setzt das angegebene Shading Model (GL_FLAT oder GL_SMOOTH) 1 Lokales Beleuchtungsmodell in OpenGL für n Lichtquellen k s 2 Normalenvektoren - Modelview-Transformation
2.10 Lichtquellen und Beleuchtung
2.10 Lichtquellen und void glshademodel(glenum model) - Setzt das angegebene Shading Model (GL_FLAT oder GL_SMOOTH) 2-1 2.10 Lichtquellen und Lokales smodell in OpenGL für n Lichtquellen k s 2-2 2.10 Lichtquellen
2.10 Lichtquellen und Beleuchtung
2.10 Lichtquellen und void glshademodel(glenum model) - Setzt das angegebene Shading Model (GL_FLAT oder GL_SMOOTH) 2-1 2.10 Lichtquellen und Lokales smodell in OpenGL für n Lichtquellen k s 2-2 2.10 Lichtquellen
Der Screenshot entsteht bei der Verwendung eines Schwellwertes von 0,15 und entspricht meines Erachtens genau der Vorlage aus der Aufgabenstellung.
Aufgabe : Alha-Texturen Die Bedienung des Programms wird über diese Tasten realisiert: Taste Aktion ESC Programm beenden Leertaste Patch rotieren an/aus + in die Szene hineinzoomen - aus der Szene herauszoomen
Computergrafik SS 2008 Oliver Vornberger. Kapitel 21: OpenGl
Computergrafik SS 2008 Oliver Vornberger Kapitel 21: OpenGl 1 OpenGl Programming Guide 2 OpenGl 200 Befehle in OpenGL Library (geometrische Primitive, Attribute) glcolor3f(1.0,0.0,0.0); glrotatef(30.0,0.0,0.0,1.0);
BlendaX Grundlagen der Computergrafik
BlendaX Grundlagen der Computergrafik Beleuchtungsmodelle (Reflection Models) 16.11.2007 BlendaX Grundlagen der Computergrafik 1 Rendering von Polygonen Der Renderingprozess lässt sich grob in folgende
Wo stehen wir? Geometrie Transformationen Viewing Beleuchtungsmodelle
Wo stehen wir? Geometrie Transformationen Viewing Beleuchtungsmodelle Und nun? Transparenz Anti-Aliasing Dunst, Nebel Computer Graphik R 3 Projektion N 2 Pixel Ops C Objektraum Bildraum Farbraum Blending
Kapitel 21: OpenGl 1
Kapitel 21: OpenGl 1 OpenGl Programming Guide 2 OpenGl 200 Befehle in OpenGL Library (geometrische Primitive, Attribute) glcolor3f(1.0,0.0,0.0); glrotatef(30.0,0.0,0.0,1.0); 50 Befehle in OpenGl Utility
2. Übung zu Computergraphik 2
2. Übung zu Computergraphik 2 Stefan Müller KOBLENZ LANDAU Aufgabe 1: Accumulation Buffer Tiefenunschärfe mit Accumulation Buffer simulieren Idee: Szene von versch. Kamerapositionen (from) aus betrachten
I II III. Übungsblatt 2 Stephan Brumme 10. Mai 2001 Matrikelnr , 4.Semester. Aufgabe 3
Übungsblatt 2 Stephan Brumme 0. Mai 200 Aufgabe Es erscheint sinnoll zuerst eine Kugel zu modellieren deren Mittelpunkt im Koordinatenursprung liegt und die den Radius besitzt ( Einheitskugel ). Anschließend
Tim Pommerening v0.0.1 (ohne Gewähr) Seite 1 von 6
Tim Pommerening v0.0.1 (ohne Gewähr) Seite 1 von 6 Formelsammlung: GDV Bezeichnung Gefülltes regelmäßiges n-eck Formel /** * Zeichnet ein gefülltes n-eck. * x0, y0 : Koordinaten des Mittelpunkts. * r0
3.5 Methode des gleitenden Horizonts
3.5 Methode des gleitenden Horizonts Für Flächen die durch eine Gleichung F (x, y, z) = 0 gegeben sind, lässt sich die Methode des gleitenden Horizonts anwenden. Dabei werden die sichtbaren Teile der Schnitte
Wer bin ich. 1. Übung zu Computergraphik 2. Allgemeines zur Übung. OpenGL allgemeines. Aufbau OpenGL Programm. Hauptprogramm
Wer bin ich. Übung u Computergraphik 2 Prof. Dr. Stefan Müller Thorsten Grosch Thorsten Grosch, AG Computergraphik Seit.7.2002 an der Uni Koblen Raum MB 9 Fragen ur Übung: Forum auf der Übungsseite http://www.uni-koblen.de/~cg/veranst/ws004/cg2_uebung.html
Ziele sind das Arbeiten mit Funktionen (Modularisierung, Parameterübergabe), sowie - Reihentyp (Array)
Ziele sind das Arbeiten mit Funktionen (Modularisierung, Parameterübergabe), sowie - Aufgabe 3: Diese Aufgabe baut auf der 2. Aufgabe auf und erweitert diese. Die Funktionalität der 2. Aufgabe wird also
I - Phone 3D 3D Spieleentwicklung für's I-Phone
I - Phone 3D 3D Spielentwicklung für das I-Phone Gliederung Allgemein Open GL ES Arbeitsschritte / 3D Grafik Ein Spiel entsteht Ein Beispiel Vorgehensweise Allgemein Erzeugen von Modellen Komplexe Modelle
Übungsstunde 7 zu Computergrafik 1
Institut für Computervisualistik Universität Koblenz 10. und 11. Dezember 2012 Inhaltsverzeichnis 1 Licht und Material Licht in OpenGL Material in OpenGL 2 in C++ Licht in OpenGL Lichtquellen In OpenGL
Computergrafik 1 Beleuchtung
Computergrafik 1 Beleuchtung Kai Köchy Sommersemester 2010 Beuth Hochschule für Technik Berlin Überblick Lokale Beleuchtungsmodelle Ambiente Beleuchtung Diffuse Beleuchtung (Lambert) Spiegelnde Beleuchtung
Graphische Datenverarbeitung I WS 2017/2018. OpenGL Einführung. Prof. Dr. techn. Dieter Fellner. Roman Getto. Julian Zobel
Graphische Datenverarbeitung I WS 2017/2018 OpenGL Einführung Prof. Dr. techn. Dieter Fellner Roman Getto Julian Zobel Was sind APIs API: Application Programming Interface Low-level graphic API Interface
Beleuchtung Schattierung Rasterung
Beleuchtung Schattierung Rasterung Thomas Jung t.jung@htw-berlin.de Beleuchtung, Schattierung und Rasterung in allen Echtzeit-3D-Umgebungen gleich OpenGL Direct3D 3dsmax,... Letzter Bestandteil der Grafikpipeline
Einführung in die API OpenGL
Einführung in die API OpenGL LMU München - LFE Medieninformatik Folie 1 Überblick Was ist OpenGL? OpenGL und Windows 3D Grafik Grundlagen OpenGL benutzen Transformationen, Licht, Texture Mapping Ein kleines
Beleuchtungsmodelle und Shading
Beleuchtungsmodelle und Shading Andreas Spillner Computergrafik, WS 2018/2019 Ziel der Modellierung von Beleuchtung Baut auf dem Kapitel zu Licht und Farben auf. In die 3D-Szene werden Lichtquellen eingebracht.
Abschlußtest Programmieren 30. Juni 2017 Name: Punkte von 32: Gruppe: Haase-Di Haase-Do Stanek-Di Stanek-Do
Abschlußtest Programmieren 30. Juni 2017 Name: Punkte von 32: Gruppe: Haase-Di Haase-Do Stanek-Di Stanek-Do 1. (6 P) Schreiben Sie die folgenden mathematischen Ausdrücke als korrekte C++- Anweisungen (Variablendeklarationen,
Christina Nell. 3D-Computergrafik
Christina Nell 3D-Computergrafik Was ist 3D-Computergrafik? 3D graphics is the art of cheating without getting caught. (unbekannte Quelle) Folie 2/52 Inhalt Beleuchtung Shading Texturierung Texturfilterung
Lokale Beleuchtungsmodelle
Lokale Beleuchtungsmodelle Oliver Deussen Lokale Modelle 1 Farbschattierung der Oberflächen abhängig von: Position, Orientierung und Charakteristik der Oberfläche Lichtquelle Vorgehensweise: 1. Modell
Geometrische Primitive und Hidden Surface Removal
C A R L V O N O S S I E T Z K Y Geometrische Primitive und Hidden Surface Removal Johannes Diemke Übung im Modul OpenGL mit Java Wintersemester 2010/2011 Wiederholung Geometrische Primitive in OpenGL Mit
Computergrafik SS 2012 Probeklausur Universität Osnabrück Henning Wenke, M. Sc. Sascha Kolodzey, B. Sc., Nico Marniok, B. Sc.
Computergrafik SS 2012 Probeklausur 1 06.07.2012 Universität Osnabrück Henning Wenke, M. Sc. Sascha Kolodzey, B. Sc., Nico Marniok, B. Sc. Aufgabe 1 (19 Punkte) Beantworten Sie die folgenden Fragen prägnant.
Humboldt-Universität zu Berlin Wintersemester 2010/11 Institut für Informatik Grundlagen der Programmierung. 6. Übungsblatt
Humboldt-Universität zu Berlin Wintersemester 2010/11 Institut für Informatik Grundlagen der Programmierung Prof. Redlich 6. Übungsblatt 21 (+4) Punkte Abgabe bis 31.01.2010 (08:00 Uhr) über GOYA Aufgabe
Computergrafik Universität Osnabrück, Henning Wenke,
Computergrafik Universität Osnabrück, Henning Wenke, 2012-05-14 Kapitel V: Modeling Transformation & Vertex Shader 5.1 Vertex Definitionen: Vertex Vertex Computergrafik Mathematischer Punkt auf einer Oberfläche
Programmierpraktikum 3D Computer Grafik
Prof. Andreas Butz Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Grundlagen der Computergrafik: Affine Transformationen Beleuchtung in OpenGL. Organisatorisches & Zeitplan Bearbeitungszeitraum
Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 29
Kapitel 2 Einführung in C++ Seite 1 von 29 C++ Zeichensatz - Buchstaben: a bis z und A bis Z. - Ziffern: 0 bis 9 - Sonderzeichen: ; :,. # + - * / % _ \! < > & ^ ~ ( ) { } [ ]? Seite 2 von 29 Höhere Elemente
Programmierpraktikum 3D Computer Grafik
Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Einführung die Computergrafik: GLUT und OpenGL. Teilnehmer und Abgaben Nachname Abeldt Brucker Dimitrova Gebhardt Goldhofer Lauber Promesberger
3. Bedingte Anweisungen
3. Bedingte Anweisungen Fallunterscheidungen der Form WENN...DANN... in der Informatik kennst du aus der 7. Klasse beim Programmieren mit Karol sowie aus der 9. Klasse beim Arbeiten mit Tabellen und Datenbanken.
Wima-Praktikum 2: Bildsynthese-Phong
Wima-Praktikum 2: Bildsynthese-Phong Wima-Praktikum 2: Prof. Dr. Lebiedz, M. Sc. Radic 1 Inhaltsverzeichnis 1 Einleitung 3 2 Kurze Beschreibung der Aufgabenstellung und dem Phong- Modell 3 3 Modellierung
Rendering: Lighting and Shading
Rendering: Lighting and Shading Hauptseminar: How to make a Pixar Movie Inhalt Einführung Was ist Rendering Was ist Reflexionsmodelle Lighting Shading Globale Beleuchtungsmodelle Zusammenfassung 2/53 Inhalt
Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.
Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe
Computergrafik Universität Osnabrück, Henning Wenke,
Computergrafik Universität Osnabrück, Henning Wenke, 2012-06-19 Die Erde ist eine Scheibe! Die Erde ist eine Kugel! 2012-06-19, H.W., Wörtlich 1992-11-02, Papst J.P. II. Sinngemäß. Kirchengeschichtlicher
Beleuchtung. in Computerspielen
Beleuchtung in Computerspielen Motivation Überblick Licht und Schattierung Lichtquellen Lokale Beleuchtungsmodelle Schattierungsverfahren Oberflächensimulation Beispiele der CryEngine Ausblick Zusammenfassung
Grafikprogrammierung (Echtzeitrendering)
(Echtzeitrendering) erfordert Unterstützung für beide Aufgaben der Computergrafik Geometrische Modellierung Datenstrukturen für geometrische Modelle Schnittstellen für deren Kombination Bildsynthese Rendering
Programmierpraktikum 3D Computer Grafik
Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Grundlagen der Computergrafik: Affine Transformationen Beleuchtung in OpenGL. Organisatorisches & Zeitplan Bearbeitungszeitraum für aktuelles
Rendering. (illumination/shading) Beleuchtungsmodelle. Schattierung von Polygonen. Lokale Beleuchtungsmodelle
Beleuchtung/Schattierung (illumination/shading) Beleuchtungsmodelle Globale Beleuchtungsmodelle Lokale Beleuchtungsmodelle Schattierung von Polygonen 1. Flat shading 2. Gouraud Shading 3. Phong Shading
Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.
Ziele sind das Arbeiten mit Zeigern, sowie Records und Funktionen Aufgabe 5: Diese Aufgabe basiert auf der Aufgabe 4. Es ist ein Programm zu erstellen, in welchem der Anwender aus einer Anzahl möglicher
Computergrafik 1 Übung
Prof. Dr. Andreas Butz Dipl.-Medieninf. Hendrik Richter Dipl.-Medieninf. Raphael Wimmer Computergrafik 1 Übung Meshes http://codeidol.com/img/illustrator-cs/54084xfg1001_0.jpg 6 1 Primitive 2 2D-Objekte
Computergrafik 1 Übung
Prof. Dr. Andreas Butz Dipl.-Medieninf. Hendrik Richter Dipl.-Medieninf. Raphael Wimmer Computergrafik 1 Übung 4 1 Was ist OpenGL? OpenGL = Open Graphics Library API für Echtzeit-3D-Grafik Hardwarebeschleunigt
Übung Notendarstellung
Übung Notendarstellung Einführung Unsere Zeichenfläche hat einige Erweiterungen erfahren, die wir heute nutzen wollen um eine Notendarstellung zu erhalten. Insbesondere hat gibt es nun die Möglichkeit
Computergrafik SS 2010 Henning Wenke. Kapitel 21: OpenGL 3.1 (Fortsetzung)
Computergrafik SS 2010 Henning Wenke Kapitel 21: OpenGL 3.1 (Fortsetzung) 1 OpenGL Aufgaben der GL-Befehle Konfigurieren der Graphics Pipeline Datenübergabe an Server Steuern des Datenflusses Java OpenGL
7.1 Polygon Offset. Anwendung - Darstellung von Polygonen als Teil von Oberflächen - Beispiel: Gradlinien auf der Erde - Schwierigkeit:
7.1 Polygon Offset Anwendung - Darstellung von Polygonen als Teil von Oberflächen - Beispiel: Gradlinien auf der Erde - Schwierigkeit: - Polygone sollen einmal als Fläche und einmal in Wireframe-Darstellung
Nachname: Vorname: Matr.-Nr.: Punkte: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende Struktogramm zur Berechnung von sin(x) mit Hilfe einer Reihe.
Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe: ( / 25 Pkt.) Gegeben ist das folgende
Objektorientierte Programmierung
Unterlagen zur Veranstaltung Einführung in die Objektorientierte Programmierung Mit Processing Alexis Engelke Sommer 2012 Alexis Engelke Inhalt Level 1: Geometrie Hintergrundfarben Punkte, Linien und deren
Angewandte Mathematik und Programmierung
Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens WS 2013/14 Operatoren Operatoren führen Aktionen mit Operanden aus. Der
Schattierung und Beleuchtung
In OpenGL haben Materialien und Lichter ambiente, diffuse, spekulare und emissive Farb-Komponenten, die miteinander interagieren; die Summe Σ Q über die Lichtanteile aller Lichtquellen ergibt (für j=r,g,b)
OpenGL. Kapitel Grundlagen
Kapitel 21 OpenGL 21.1 Grundlagen OpenGL bietet eine Schnittstelle zwischen dem Anwenderprogramm und der Grafikhardware eines Computers zum Modellieren und Projizieren von dreidimensionalen Objekten. Diese
Schriftlicher Test (120 Minuten) VU Einführung ins Programmieren für TM. 23. Januar 2017
Familienname: Vorname: Matrikelnummer: Aufgabe 1 (3 Punkte): Aufgabe 2 (1 Punkt): Aufgabe 3 (2 Punkte): Aufgabe 4 (4 Punkte): Aufgabe 5 (2 Punkte): Aufgabe 6 (2 Punkte): Aufgabe 7 (4 Punkte): Aufgabe 8
Polymorphismus 44. Function.hpp. #include <string>
Polymorphismus 44 #include Function.hpp class Function { public: virtual ~Function() {}; virtual const std::string& get_name() const = 0; virtual double execute(double x) const = 0; }; // class
3D - Modellierung. Arne Theß. Proseminar Computergraphik TU Dresden
3D - Modellierung Arne Theß Proseminar Computergraphik TU Dresden Gliederung Darstellungsschemata direkte Constructive Solid Geometry (CSG) Generative Modellierung Voxelgitter indirekte Drahtgittermodell
Computergraphik 1 LU ( ) Ausarbeitung Abgabe 2
Computergraphik 1 LU (186.095) Ausarbeitung Abgabe 2 Beispiel 4... 2 CG1Object... 2 if (dobackfaceeculling && numvertexindec >=3)... 2 CG1ScanfilledPolygon CG1Polygon... 2... 2... 3 buildactivelist (int
Computergrafik 2010 Oliver Vornberger. Kapitel 18: Beleuchtung. Vorlesung vom
Computergrafik 2010 Oliver Vornberger Kapitel 18: Beleuchtung Vorlesung vom 08.06.2010 1 Korrektur α Für den Winkel zwischen den normierten Vektoren und gilt: ~v ~w A B C D sin(α) = ~v ~w 0,0 % sin(α)
3D Programmierpraktikum: Geometrische Transformationen, Materialien und Beleuchtung
3D Programmierpraktikum: Geometrische Transformationen, Materialien und Beleuchtung Praktikum 3D Programmierung Sebastian Boring, Otmar Hilliges Donnerstag, 8. Mai 26 LMU München Medieninformatik Boring/Hilliges
Lösung der OOP-Prüfung WS12/13
2.1.2013 Lösung der OOP-Prüfung WS12/13 1. Aufgabe a) Da der Konstruktor im protected-bereich steht, können keine eigenständigen Objekte der Klasse angelegt werden. Durch den protected-konstruktor wird
Übungsstunde 8 zu Computergrafik 1
Institut für Computervisualistik Universität Koblenz 14. und 15. Januar 2013 Inhaltsverzeichnis 1 Wiederholung - Beleuchtung Gouraud-Shading Phong-Shading Flat-Shading Vergleich 2 - Idee in OpenGL Texturfilterung
Informatik II Vorlesung am D-BAUG der ETH Zürich. Vorlesung 7, Fallstudie Point-In-Polygon Algorithmus Diskretisierung: Linien zeichnen
Informatik II Vorlesung am D-BAUG der ETH Zürich Vorlesung 7, 11.4.2016 Fallstudie Point-In-Polygon Algorithmus Diskretisierung: Linien zeichnen Fallstudie: Point-In-Polygon Algorithmus Annahme: abgegrenztes
Klausur Computergrafik für Bachelor-Studierende SS 2018
Technische Hochschule Mittelhessen Prof. Dr.-Ing. A. Christidis Fachbereich Mathematik, Naturwissenschaften und Informatik 18. Juli 2018 Klausur Computergrafik für Bachelor-Studierende SS 2018 Personalien:
Informatik für Mathematiker und Physiker Woche 7. David Sommer
Informatik für Mathematiker und Physiker Woche 7 David Sommer David Sommer 30. Oktober 2018 1 Heute: 1. Repetition Floats 2. References 3. Vectors 4. Characters David Sommer 30. Oktober 2018 2 Übungen
Thema heute: Vererbung und Klassenhierarchien. Abgeleitete Klassen. Vererbung von Daten und Funktionen. Virtuelle Funktionen
1 Thema heute: Vererbung und Klassenhierarchien Abgeleitete Klassen Vererbung von Daten und Funktionen Virtuelle Funktionen 2 Vererbung oft besitzen verschiedene Datentypen einen gemeinsamen Kern Beispiel:
Polymorphismus 179. Function.h. #include <string>
Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function
2D-Clipping. Kapitel Clipping von Linien. y max. y min x min. x max
Kapitel 5 2D-Clipping Ziel: Nur den Teil einer Szene darstellen, der innerhalb eines Fensters sichtbar ist. y max y min x min x max Abbildung 5.1: Clip-Fenster 5.1 Clipping von Linien Zu einer Menge von
Lokale Beleuchtungsmodelle
Lokale Beleuchtungsmodelle Proseminar GDV, SS 05 Alexander Gitter Betreuer: Dirk Staneker Wilhelm-Schickard-Institut für Informatik Graphisch-Interaktive Systeme Sand 14 D-72076 Tübingen Einleitung und
Klassen. C++ Übung am 02. Juni 2016
Klassen C++ Übung am 02. Juni 2016 Klassen - der Kern objektorientierter Programmierung - Festlegung der Daten und Funktionen einer Klasse - Deklaration als public oder private - Konstruktoren erzeugen
Echtzeit Videoverarbeitung
Erzeugung von 3D Darstellungen Herbert Thoma Seite 1 Gliederung 3D Transformationen Sichtbarkeit von 3D Objekten Beleuchtung Texturen Beispiele: SGI Infinite Reality 2, PC 3D Hardware Seite 2 3D Transformationen
C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16
C++ Teil 4 Sven Groß IGPM, RWTH Aachen 30. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 4 30. Apr 2015 1 / 16 Themen der letzten Vorlesung Funktionen: Definition und Aufruf Wert- und Referenzparameter,
Repetitorium Programmieren I + II
Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case
Informatik - Übungsstunde
Informatik - Übungsstunde Jonas Lauener (jlauener@student.ethz.ch) ETH Zürich Woche 12-23.05.2018 Lernziele Klassen Dynamic Memory Jonas Lauener (ETH Zürich) Informatik - Übung Woche 12 2 / 20 Structs
Objektorientierte Programmierung mit C++ SS 2007
Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string
Einführung Sprachfeatures Hinweise, Tipps und Styleguide Informationen. Einführung in C. Patrick Schulz
Patrick Schulz patrick.schulz@paec-media.de 29.04.2013 1 Einführung Einführung 2 3 4 Quellen 1 Einführung Einführung 2 3 4 Quellen Hello World in Java Einführung 1 public class hello_ world 2 { 3 public
Programmierpraktikum 3D Computer Grafik
Dipl.Inf. Otmar Hilliges Programmierpraktikum 3D Computer Grafik Szenegraphen, Texturen und Displaylisten. Agenda Beleuchtungsmodelle in OpenGL Bump-Maps zur Erzeugung von Reliefartigen Oberflächen Height-Maps
Graphische Primitive Punkte Geradenstücke (Liniensegmente) Polygone
Graphische Primitive Punkte Geradenstücke (Liniensegmente) Polygone Punkte glvertex3f (50.0, 50.0, 0.0) glvertex2f (50.0, 50.0) glvertex4f (50.0, 50.0, 0.0,1.0) GLfloat vect[3] = {50.0, 50.0, 0.0} glvertex3fv
Hochschule Darmstadt Informatik-Praktikum WS 2016/2017 WIng Bachelor 4. Aufgabenblatt Modularisierung, Funktionen, Unterprogramme
Ziele sind das Arbeiten mit Funktionen, sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 4: Diese Aufgabe basiert auf der Aufgabe 3.
Algorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
Klausur Computergrafik für Bachelor-Studierende SS 2017
Technische Hochschule Mittelhessen Prof. Dr.-Ing. A. Christidis Fachbereich Mathematik, Naturwissenschaften und Informatik 17. Juli 2017 Klausur Computergrafik für Bachelor-Studierende SS 2017 Personalien:
Name: Klausur Informatik III WS 2003/04
1 : Methodenimplementierung ca. 42 Punkte Gegeben ist die Klasse Mitarbeiter. Listing 1: (./Code1/Mitarbeiter.h) using namespace std; // globale Variable fuer Ausgabedatei // kann entsprechend
OpenGL Modelierung und Beleuchtung
OpenGL Modelierung und Beleuchtung Proseminar Computergrafik René Lützner Übersicht Einleitung Modellierung Beleuchtung Quellen 2 Einleitung Begriffserklärung Historische Entwicklung Erweiterbarkeit OpenGl
Klasse Label. class Label { Code code; List<Integer> fixuplist; // code positions to patch int adr; // address of label in code
Klasse Label class Label { Code code; List fixuplist; // code positions to patch int adr; // address of label in code // inserts offset to label at current void put (); // defines label to be
Kapitel 13. Definition von Klassen. OOP Thomas Klinker 1
Kapitel 13 Definition von Klassen OOP Thomas Klinker 1 OOP Thomas Klinker 2 Datenabstraktion Der Mensch abstrahiert, um komplexe Sachverhalte darzustellen. Dinge und Vorgänge werden auf das wesentliche
(7) Normal Mapping. Vorlesung Computergraphik II S. Müller. Dank an Stefan Rilling U N I V E R S I T Ä T KOBLENZ LANDAU
(7) Normal Mapping Vorlesung Computergraphik II S. Müller Dank an Stefan Rilling Einleitung Die Welt ist voller Details Viele Details treten in Form von Oberflächendetails auf S. Müller - 3 - Darstellung
Übungsstunde 5 zu Computergrafik 1
Institut für Computervisualistik Universität Koblenz 19. un 20. November 2012 Inhaltsverzeichnis 1 Transformationen Translation Skalierung Rotation 2 Reihenfolge von Transformationen Beispiele 3 Programmieraufgabe
Übungsblatt 1 Geometrische und Technische Optik WS 2012/2013
Übungsblatt 1 Geometrische und Technische Optik WS 2012/2013 Gegeben ist eine GRIN-Linse oder Glasaser) mit olgender Brechzahlverteilung: 2 2 n x, y, z n0 n1 x y Die Einheiten der Konstanten bzw. n 1 sind
Themen. Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente
Themen Formatierte und unformatierte Eingabe Bedingungsoperator Namespaces Kommandozeilenargumente Formatierte Eingabe mit cin Die Formatierung der Eingabe ist der Ausgabe sehr ähnlich: Die Flags werden
Hochschule Darmstadt Informatik-Praktikum WS 2017/2018 WIng Bachelor 6. Aufgabenblatt Zeiger, verkettete Liste, Dateieingabe und -ausgabe
Aufgabe 6: Häuser verwalten - dynamisch Für ein Schneeräumungsunternehmen soll ein Programm zur Verwaltung von Häuserlisten geschrieben werden. Das Programm soll in der Lage sein, zu einem Haus die wichtigsten
4.3 Beleuchtung und Schattierung
4.3 Beleuchtung und Schattierung Die Grundbestandteile des Renderprozesses Atmosphärische Streuung Emission Reflexion/ Transmission/ Emission Oberfläche 4-38 4.3 Beleuchtung und Schattierung Beleuchtung
Hochschule Darmstadt Informatik-Praktikum SS 2018 EIT Bachelor 3. Aufgabenblatt Funktionen - Unterprogramme
Ziel ist die Aufteilung eines Programms in Funktionen und Dateien Aufgabe 3: Diese Aufgabe ist die Weiterentwicklung von Aufgabe 2. Es ist ein Programm zu erstellen, in welchem der Anwender aus einer Anzahl
D O K U M E N T A T I O N Berufsbezogene Projekte 2006 Industrieschule Chemnitz
D O K U M E N T A T I O N Berufsbezogene Projekte 2006 Industrieschule Chemnitz Klasse: KM03-2 Gruppe: 2 Mitglieder: Rico Wündisch Thema: Erstellen Sie eine 3D-Präsentation verschiedener Radbauformen für
Vererbung I. Kfz Eigenschaften und Methoden der Klasse Kfz Lkw. Pkw. Eigenschaften und Methoden der Klasse Kfz
Einführung in C++ Vererbung I Durch Vererbung können aus bereits bestehenden Klassen neue Klassen konstruiert werden. Die neue abgeleitete Klasse erbt dabei die Daten und Methoden der sog. Basisklasse.