46
Graphische Primitive Punkte Geradenstücke (Liniensegmente) Polygone Universität Frankfurt

Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Graphische Primitive

• Punkte

• Geradenstücke (Liniensegmente)

• Polygone

Universität Frankfurt

Page 2: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

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 (vect)

Universität Frankfurt

Page 3: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Darstellung von Punkten I

glBegin(GL_POINTS); /* Liste von Punkten */glVertex2f (50.0, 50.0) ; /* Punkt-Definition */glVertex4f (-25.0, -25.0, 0.0, 1.0); /* “ */glVertex4f (0.0, 0.0, 0.0,1.0); /* “ */ glVertex3f (319.0, -14.0, 0.0); /* “ */glVertex3f (7.0, 3.0, 0.0); /* “ */glVertex2f (-30.0, 12.0); /* “ */

glEnd(); /* Ende der Liste */

Universität Frankfurt

Page 4: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Darstellung von Punkten II

Universität Frankfurt

Page 5: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Darstellung von Punkten III

glPointSize(7.0); /* Punktgröße definieren */

glBegin(GL_POINTS); /* Liste von Punkten */glVertex2f (50.0, 50.0) ; /* Punkt-Definition */glVertex4f (-25.0, -25.0, 0.0, 1.0); /* “ */glVertex4f (0.0, 0.0, 0.0,1.0); /* “ */ glVertex3f (319.0, -14.0, 0.0); /* “ */glVertex3f (7.0, 3.0, 0.0); /* “ */glVertex2f (-30.0, 12.0); /* “ */

glEnd(); /* Ende der Liste */

Universität Frankfurt

Page 6: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Darstellung von Punkten IV

Universität Frankfurt

Inquiry-Funktion:

GLfloat size[2]; /* min/max Größe */

GLfloat step; /* Schrittweite */

glGetFloatv (GL_POINT_SIZE_RANGE, size);

glGetFloatv (GL_POINT_SIZE_GRANULARITY, &step);

Page 7: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Darstellung von Punkten IV

Universität Frankfurt

Page 8: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Darstellung von Punkten Vvoid display(void){float angle, x, y;GLclampf b = 0.0; GLclampf g = 0.0;GLfloat size = 10.0;

glClear(GL_COLOR_BUFFER_BIT);

for (angle=0.0; angle <= PI; angle+= PI/20.0) //#define PI 3.1415{

x = 30*cos(angle); y = 30.0*sin(angle);

glPointSize(size); // !!!

glBegin(GL_POINTS);glColor3f (1.0, b, g);glVertex2f (x, y);glEnd();

size += 0.5;b += 0.05; g += 0.05;

} /* end_for */

glFlush();}

Universität Frankfurt

Page 9: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Geradenstücke I

Universität Frankfurt

GLfloat vect[2] = {-30.0, 12.0}

glBegin(GL_LINES); /* Liste von Punkten */glVertex2f (50.0, 50.0) ; /* Punkt-Definition */glVertex4f (-25.0, -25.0, 0.0, 1.0); /* “ */glVertex4f (0.0, 0.0, 0.0,1.0); /* “ */ glVertex3f (19.0, -14.0, 0.0); /* “ */glVertex3f (7.0, 3.0, 0.0); /* “ */glVertex2fv (vect); /* “ */

glEnd(); /* Ende der Liste */

Page 10: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Geradenstücke II

Universität Frankfurt

Page 11: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Geradenstücke III

Universität Frankfurt

glLineWidth(5.0);

glBegin(GL_LINES); /* Liste von Punkten */glVertex2f (50.0, 50.0) ; /* Punkt-Definition */glVertex4f (-25.0, -25.0, 0.0, 1.0); /* “ */glVertex4f (0.0, 0.0, 0.0,1.0); /* “ */ glVertex3f (19.0, -14.0, 0.0); /* “ */glVertex3f (7.0, 3.0, 0.0); /* “ */glVertex2f (-30.0, 12.0); /* “ */glEnd(); /* Ende der Liste */

Page 12: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Geradenstücke IV

Universität Frankfurt

Inquiries:

GLfloat width_range[2];GLfloat step;

glGetFloatv (GL_LINE_WIDTH_RANGE, width_range);glGetFloatv (GL_LINE_WIDTH_GRANULARITY, &step);

Page 13: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Geradenstücke V

Universität Frankfurt

Page 14: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Geradenstücke VI

Universität Frankfurt

void display(void)

{

float angle, x, y;

GLclampf b = 0.0;

GLclampf g = 0.0;

glClear(GL_COLOR_BUFFER_BIT);

glLineWidth(3.0);

glBegin(GL_LINE_STRIP);

for (angle=0.0; angle <= PI; angle+= PI/11.0)

{

x = 30*cos(angle); y = 30.0*sin(angle);

glColor3f (1.0, b, g);

glVertex2f (x, y);

b += 0.1; g += 0.1;

} /* end_for */

glEnd(); /* Ende LINE_STRIP */

glFlush();

}

Page 15: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Geradenstücke VII

Universität Frankfurt

• GL_LINES

• GL_LINE_STRIP

• GL_LINE_LOOP

Page 16: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Geradenstücke VIIILine Stippling

Universität Frankfurt

Page 17: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Geradenstücke IXLine Stippling

Universität Frankfurt

void glLineStipple(GLint factor, GLushort pattern); // 1 <= factor <= 255

Beispiel:

glLineStipple (1, 0xAAAA);

glEnable(GL_LINE_STIPPLE);

....

glDisable(GL_LINE_STIPPLE);

Page 18: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Geradenstücke XLine Stippling

Universität Frankfurt

void display(void)

{

GLfloat y; // Varying Y coordinate

GLint factor = 1; // Stippling factor

GLushort pattern = 0x5555; // Simple stipple pattern

glClear(GL_COLOR_BUFFER_BIT); // Clear the window with current clearing color

glEnable(GL_LINE_STIPPLE); // Enable stippling

for(y = -40.0f; y <= 40.0f; y += 10.0f) // Step up Y axis 10 units at a time

{

glLineStipple(factor,pattern); // Reset the repetition factor and pattern

glBegin(GL_LINES); glVertex2f(-40.0f, y);

glVertex2f(40.0f, y);

glEnd();

factor++;

}

glFlush(); // Flush drawing commands

}

Page 19: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Geradenstücke XILine Stippling

Universität Frankfurt

Page 20: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone IVoraussetzungen

Universität Frankfurt

• eben Polygon ist Teilmenge einer Ebene

• einfach keine Schnittpunkte der Kanten

• konvex jede Strecke zwischen zwei Punkten des Polygon liegt vollständig innerhalb des Polygons.

• zweiseitig (front face, back face)

Page 21: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone IIDarstellung

Universität Frankfurt

• nur Eckpunkte (vertices)

• Umriß (outline)

• gefüllt mit oder ohne Muster (solid, stipple pattern)

Voreinstellung: gleiche Darstellung für Vorder- und Rückseite

Page 22: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone IIIDarstellung

Universität Frankfurt

Einstellungen:

void glPolygonMode(GLenum face, Glenum mode)

face: GL_FRONT_AND_BACK, GL_FRONT, GL_BACK)

mode: GL_POINT, GL_LINE, GL_FILL

Beispiele:

glPolygonMode(GL_FRONT, GL_FILL);

glPolygonMode(GL_BACK, GL_LINE);

Page 23: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone IVDefinition von Vorder- und Rückseite

Universität Frankfurt

Definition der Vorderseite durch geordnete Aufzählung der Eckpunkte:

• mathematisch positiv / in Gegenuhrzeigerrichtung (counterclockwise):

• mathematisch negativ / in Uhrzeigerrichtung (clockwise)

Page 24: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone VBestimmung von Vorder-/Rückseite in OpenGL

Universität Frankfurt

Berechnung der Polygonfläche in geeigneten Koordinaten:

Page 25: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone VIDefinition der Vorderseite

Universität Frankfurt

Definition durch Festlegung der Drehrichtung:

void glFrontFace( GLenum mode)

mode: GL_CCW, GL_CW

default: GL_CCW

Beispiel:

glFrontFace (GL_CCW);

Page 26: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone VIIaDarstellung

Universität Frankfurt

glBegin(GL_TRIANGLE_FAN); //Defined in counterclockwise order

glVertex3f(0.0, 0.0, 0.0);

for (i=0; i<=8; i++)

{

if (i%2 == 0)

glColor3f (1.0, 0.0, 0.0);

else glColor3f (0.0, 1.0, 0.0);

glVertex3f (cos(i*2*PI/8), sin(i*2*PI/8), 0.0);

}

glEnd();

glBegin(GL_TRIANGLE_FAN); //Defined in clockwise order

glColor3f (1.0, 0, 1.0);

for (i=0; i>= -7; i--)

glVertex3f (cos(i*2*PI/8)+1, sin(i*2*PI/8)+1, -1);

glEnd();

Page 27: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone VIIbDarstellung

Universität Frankfurt

Page 28: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone VIIIPolygon Stippling

Universität Frankfurt

void glPolygonStipple(GLubyte *mask)

mask: pointer to 32x32 stipple pattern

Beispiel:

GLubyte pattern[128];

glPolygonStipple (pattern);

glEnable(GL_POLYGON_STIPPLE)

….

glDisable(GL_POLYGON_STIPPLE)

Page 29: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone VIIIaPolygon Stippling

Universität Frankfurt

Page 30: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone VIIIbStippling Pattern

Universität Frankfurt

Page 31: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone IX

Universität Frankfurt

GL_TRIANGLES

GL_TRIANGLE_FAN

GL_TRIANGLE_STRIP

GL_QUADS

GL_QUAD_STRIP

GL_POLYGON

void glRectw(GLww x1, GLww y1, GLww x2, GLww y2)

mit (w,ww) ε {(d, double),( f, float), (i, int),(s,short)}

Page 32: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone IXa

Universität Frankfurt

void draw_triangles (void)

{

int i;

glBegin(GL_TRIANGLES); //Defined in counterclockwise order

for (i=0; i<8; i++)

{

if (i%2 == 0)

glColor3f (1.0, 1.0, 0.0);

else glColor3f (0.0, 1.0, 1.0);

glVertex3f(0.0, 0.0, 0.0);

glVertex3f (cos(i*2*PI/8), sin(i*2*PI/8), 0.0);

glVertex3f (cos((i+1)*2*PI/8), sin((i+1)*2*PI/8), 0.0);

}

glEnd();

}

Page 33: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone IXai

Universität Frankfurt

Page 34: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone IXb

Universität Frankfurt

void draw_triangle_fan (void)

{

int i;

glBegin(GL_TRIANGLE_FAN); //Defined in counterclockwise order

glVertex3f(0.0, 0.0, 0.0);

for (i=0; i<=8; i++)

{

if (i%2 == 0)

glColor3f (1.0, 0.0, 0.0);

else glColor3f (0.0, 1.0, 0.0);

glVertex3f (cos(i*2*PI/8), sin(i*2*PI/8), 0.0);

}

glEnd();

}

Page 35: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone IXbi

Universität Frankfurt

Page 36: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone IXc

Universität Frankfurt

void draw_triangle_strip (void)

{

int i;

float phi = -1.0*PI;

float r = 1.5;

glBegin(GL_TRIANGLE_STRIP); //First triangle defined in counterclockwise order

glVertex3f (r*sin(PI/4.0)*cos(phi), r*cos(PI/4.0), r*sin(PI/8.0)*sin(phi));

glVertex3f (r*sin(PI/2.0)*cos(phi), r*cos(PI/2.0), r*sin(PI/2.0)*sin(phi));

for (i=0; i<8; i++)

{

if (i%2 == 0)

{

glColor3f (1.0, 1.0, 0.0);

glVertex3f (r*sin(PI/4.0)*cos(phi-(i+1)*PI/8.0), r*cos(PI/4.0), r*sin(PI/4.0)*sin(phi-(i+1)*PI/8.0));

}

Page 37: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone IXci

Universität Frankfurt

else

{

glColor3f (0, 1.0, 1.0);

glVertex3f (r*sin(PI/2.0)*cos(phi-(i+1)*PI/8.0), r*cos(PI/2.0), r*sin(PI/2.0)*sin(phi-(i+1)*PI/8.0));

}

}

glColor3f (1.0, 1.0, 0.0);

glVertex3f (r*sin(PI/4.0)*cos(0.0), r*cos(PI/4.0), r*sin(PI/2.0)*sin(0.0));

glEnd();

}

Page 38: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone IXcii

Universität Frankfurt

Page 39: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone IXd

Universität Frankfurt

void draw_quads (void)

{

int i;

glBegin (GL_QUADS);

for (i=0; i>-8; i--)

{

if (i%2 == 0)

glColor3f (0.0, 0.0, 1.0);

else glColor3f (0.0, 1.0, 0.0);

glVertex3f (cos(i*PI/4.0), sin(i*PI/4.0), 0);

glVertex3f (0.5*cos(i*PI/4.0), 0.5*sin(i*PI/4.0), 1.5);

glVertex3f (0.5*cos((i-1)*PI/4.0), 0.5*sin((i-1)*PI/4.0), 1.5);

glVertex3f (cos((i-1)*PI/4.0), sin((i-1)*PI/4.0), 0);

}

glEnd();

}

Page 40: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone IXdi

Universität Frankfurt

Page 41: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone IXe

Universität Frankfurt

void draw_quad_strip(void)

{

int i;

glBegin (GL_QUAD_STRIP);

for (i=0; i>=-8; i--)

{

if (i%2 == 0)

glColor3f (1.0, 1.0, 0.0);

else glColor3f (1.0, 1.0, 1.0);

glVertex3f (cos(i*PI/4.0), sin(i*PI/4.0), 0);

glVertex3f (0.5*cos(i*PI/4.0), 0.5*sin(i*PI/4.0), 1.5);

}

glEnd();

}

Page 42: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone IXei

Universität Frankfurt

Page 43: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone XBoundary Edges

Universität Frankfurt

Rendering von Kanten:

void glEdgeFlag (GLboolean flag)

flag: GL_TRUE, GL_FALSE

default: GL_TRUE

Beispiel:

glEdgeFlag (GL_TRUE);

glVertex3f (……….);

glEdgeFlag (GL_FALSE)

glVertex3f (……….);

Page 44: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone XIBack Face Culling

Universität Frankfurt

Rendering von Rückseiten:

glCullFace(Glenum mode)

mode: GL_FRONT, GL_BACK, GL_FRONT_AND_BACK

default: GL_BACK

Beispiel:

glCullFace (GL_BACK)

glEnable (GL_CULL_FACE);

glDisable(GL_CULL_FACE);

Page 45: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Polygone XIIVerdeckungsrechnung

Universität Frankfurt

glutInitDisplayMode (GLUT_DEPTH | …);

glClear (GL_DEPTH_BUFFER_BIT | …);

glEnable(GL_DEPTH_TEST);

glDisable(GL_DEPTH_TEST);

Page 46: Punkte Geradenstücke (Liniensegmente) Polygone...Darstellung von Punkten I glBegin(GL_POINTS); /* Liste von Punkten */ glVertex2f (50.0, 50.0) ; /* Punkt-Definition */ glVertex4f

Übungsaufgaben

Universität Frankfurt

Aufgabe 2: Orientierung von Polygonen

Geben Sie eine Herleitung für die Gleichung zur Bestimmung der Fläche eines Polygons aus derVorlesung. Wie/warum hängt die so berechnete Fläche mit der Orientierung des Polygons im Raumzusammen?

Aufgabe 3: Modellierung

Entwickeln Sie Algorithmen, um die gebräuchlichen, drei-dimensionalen Grundkörper, wie Würfel, Kugel, Zylinder, Tetraeder, Torus mit den zwei-dimensionalen Primitiven von OpenGL zuapproximieren. Schreiben Sie zu jedem Körper eine Routine draw_xxx() mit xxx∈∈∈∈{cube, ….., torus).