Chapter 2 Graphics Programming - PowerPoint PPT Presentation

1 / 50
About This Presentation
Title:

Chapter 2 Graphics Programming

Description:

Find the point halfway between the initial point and the randomly selected vertex ... Subtractive Color. 29. Indexed Color. Color-lookup table ... – PowerPoint PPT presentation

Number of Views:52
Avg rating:3.0/5.0
Slides: 51
Provided by: Ale8277
Category:

less

Transcript and Presenter's Notes

Title: Chapter 2 Graphics Programming


1
Chapter 2Graphics Programming
2
Sierpinski Gasket 1/2
  • Pick an initial point at random inside the
    triangle
  • Select one of the three vertices at random
  • Find the point halfway between the initial point
    and the randomly selected vertex
  • Display the new point
  • Replace the initial point with this new point
  • Return to step 2

3
Sierpinski Gasket 2/2
  • main()
  • initialize_the_system()
  • for(some_number_of_points)
  • pt generate_a_point()
  • display_the_point(pt)
  • cleanup()

4
Code of Sierpinski Gasket 1/3
  • typedef GLfloat point22
  • void display(void)
  • point2 vertices30,0,250,500,500,0
  • / an arbitrary triangle /
  • static point2 p 75,50
  • / any desired initial point /
  • int j, k
  • int rand() / standard random-number generator
    /

5
Code of Sierpinski Gasket 2/3
  • for(k0klt5000k)
  • jrand()3 / pick a random vertex from 0, 1,
    2 /
  • p0(p0verticesj0)/2 / compute new
    point /
  • p1(p1verticesj1)/2
  • glBegin(GL_POINTS)
  • glVertex2fv(p) / display new point /
  • glEnd()
  • glFlush()

6
Code of Sierpinski Gasket 3/3
7
Questions
  • In what colors are we drawing
  • Where on the screen does our image appear
  • How large will the image be
  • How do we create an area of the screen a window
    for our image?
  • How long will the image remain on the screen?

8
Coordinate Systems
9
Graphics Functions 1/3
10
Graphics Functions 2/3
  • Primitive functions points, line segments,
    polygons, pixels, text, curves, surfaces
  • Attributes functionscolor, pattern, typeface
  • Viewing functionsposition, orientation, clipping

11
Graphics Functions 3/3
  • Transformation functionsrotation, translation,
    scaling
  • Input functionskeyboards, mice, data tablets
  • Control functionscommunicate with windows,
    initialization, error handling
  • Inquiry functions number of colors, camera
    parameters/values

12
Points and Line Segments
13
Polygon Basics 1/3
Filled objects
Methods of displaying a polygon
14
Polygon Basics 2/3
  • Simple, convex, and flat

Simple
Nonsimple
15
Polygon Basics 3/3
Convexity
Convex objects
16
Polygon Types in OpenGL 1/2
17
Polygon Types in OpenGL 2/2
Use triangles if possible because of efficiency!
18
Drawing a Sphere 1/5
19
Drawing a Sphere 2/5
z
x
?
y
?
20
Drawing a Sphere 3/5
  • cM_PI/180.0 // degrees to radians,
    M_PI3.14159
  • for(phi-80.0 philt80.0 phi20.0)
  • glBegin(GL_QUAD_STRIP)
  • for(theta-180.0 thetalt180.0 theta20.0)
  • xsin(ctheta)cos(cphi)
  • ycos(ctheta)cos(cphi)
  • zsin(cphi)
  • glVertex3d(x, y, z)
  • xsin(ctheta)cos(c(phi20.0))
  • ycos(ctheta)sin(c(phi20.0))
  • zsin(c(phi20.0))
  • glVertex3d(x, y, z)
  • glEnd()

Drawing the portion of lower latitudes
21
Drawing a Sphere 4/5
  • xy0
  • z1
  • glBegin(GL_TRIANGLE_FAN)
  • glVertex3d(x, y, z)
  • cM_PI/180.0
  • zsin(c80.0)
  • for(theta-180.0 thetalt180.0 theta20.0)
  • xsin(ctheta)cos(c80.0)
  • ycos(ctheta)sin(c80.0)
  • glVertex3d(x, y, z)
  • glEnd()

Drawing the portion around the north pole
22
Drawing a Sphere 5/5
  • xy0
  • z-1
  • glBegin(GL_TRIANGLE_FAN)
  • glVertex3d(x, y, z)
  • z-sin(c80.0)
  • for(theta-180.0 thetalt180.0 theta20.0)
  • xsin(ctheta)cos(c80.0)
  • ycos(ctheta)sin(c80.0)
  • glVertex3d(x, y, z)
  • glEnd()

Drawing the portion around the south pole
23
Text Stroke or Raster
24
Attributes for Lines, Texts
25
Color 1/4
CT1RT2GT3B, T1, T2, T3 are the tristimulus
values
Additive color matching
26
Color 2/4
  • Basic tenet of three-color theoryIf two colors
    produce the same tristimulus values, then they
    are visually indistinguishable
  • The range of colors that we can produce on a
    given system is called that systems color gamut

27
Color 3/4
Color Solid
28
Color 4/4
Subtractive Color
Additive Color
29
Indexed Color
Color-lookup table
Example km8 pick 256 out of 16M colors
30
Two-dimensional Viewing
Objects before clipping
Image after clipping
31
Viewing Volume
32
Orthographic View
33
Aspect Ratio
Viewing rectangle
Display window
34
Viewports
35
Sample main program
  • void main(int argc, char argv)
  • glutInit(argc,argv)
  • glutInitDisplayMode(GLUT_SINGLE
    GLUT_RGB)glutInitWindowSize(500, 500)
  • glutInitWindowPosition(0, 0)glutCreateWindow(S
    imple OpenGL example)
  • glutDisplayFunc(display)
  • myinit()
  • glutMainLoop()

For most non-interactive applications
36
Gasket Program 1/3
  • void myinit(void)
  • / attributes /
  • glClearColor(1.0, 1.0, 1.0, 1.0) / white
    background /
  • glColor3f(1.0, 0.0, 0.0) / draw in red /
  • / set up viewing /glMatrixMode(GL_PROJECTION)
    glLoadIdentity()gluOrtho2D(0.0, 500.0, 0.0,
    500.0)glMatrixMode(GL_MODELVIEW)

37
Gasket Program 2/3
  • void display(void)
  • typedef GLfloat point22 / define a point
    data type /point2 vertices30.0,0.0,250.0,
    500.0,500.0,0.0 / triangle /
  • int i, j, kint rand()
  • point2 p75.0, 50.0 / arbitrary point
    inside triangle /
  • glClear(GL_COLOR_BUFFER_BIT) / clear the
    window /

38
Gasket Program 3/3
  • / compute and output 5000 new points /
  • for(k0 klt5000 k)
  • jrand()3 / compute point halfway between
    vertex and old point / p0(p0vertexj0)/
    2.0 p1(p1vertexj1)/2.0
  • glBegin(GL_POINTS) / plot point /
    glVertex2fv(p) glEnd()
  • glFlush()

39
Using Recursion 1/3
  • void triangle(point2 a, point2 b, point2 c)
  • glBegin(GL_TRIANGLES)
  • glVertex2fv(a)
  • glVertex2fv(b)
  • glVertex2fv(c)
  • glEnd()

40
Using Recursion 2/3
  • void divide_triangle(point2 a, point2 b, point2
    c, int k)
  • point2 ab, ac, bc
  • int j
  • if(kgt0)
  • for(j0 jlt2 j) abj(ajbj)/2
  • for(j0 jlt2 j) acj(ajcj)/2
  • for(j0 jlt2 j) bcj(bjcj)/2
  • divide_triangle(a, ab, ac, k-1)
  • divide_triangle(c, ac, bc, k-1)
  • divide_triangle(b, bc, ab, k-1)
  • else triangle(a, b, c) / draw triangle at end
    of of recursion /

a
ab
ac
b
c
bc
41
Using Recursion 3/3
  • Void display(void)
  • glClear(GL_COLOR_BUFFER_BIT)
  • divide_triangle(v0, v1, v2, n)
  • glFlush()

42
Three-Dimensional Gasket 1/2
  • typedef Glfloat point33
  • point3 vertices4 0,0,0,0,250,500,100,500
    ,250,250,250,100,250
  • Point3 new,old250, 100, 250
  • jrand()4
  • new0(old0verticesj0)/2
  • new1(old1verticesj1)/2
  • new2(old2verticesj2)/2

tetrahedron
43
Three-Dimensional Gasket 2/2
  • / plot point /
  • glBegin(GL_POINTS)
  • glVertex3fv(new)
  • glEnd()
  • / replace old point by new /
  • old0new0
  • old1new1
  • old2new2

44
3D Recursive Gasket 1/3
  • void triangle(point3 a, point3 b, point3 c)
  • glBegin(GL_POLYGON)
  • glVertex3fv(a)
  • glVertex3fv(b)
  • glVertex3fv(c)
  • glEnd()

45
3D Recursive Gasket 2/3
  • void divide_triangle(point3 a, point3 b, point3
    c, int k)
  • point3 ab, ac, bc
  • int j
  • if(kgt0)
  • for(j0 jlt3 j) abj(ajbj)/2
  • for(j0 jlt3 j) acj(ajcj)/2
  • for(j0 jlt3 j) bcj(bjcj)/2
  • divide_triangle(a, ab, ac, k-1)
  • divide_triangle(c, ac, bc, k-1)
  • divide_triangle(b, ab, ab, k-1)
  • else triangle(a, b, c) / draw triangle at end
    of recursion/

46
3D Recursive Gasket 3/3
  • void tetrahedron(int n)
  • glColor3f(1.0, 0.0, 0.0)
  • divide_triangle(v0, v1, v2, k)
  • glColor3f(0.0, 1.0, 0.0)
  • divide_triangle(v3, v2, v1, k)
  • glColor3f(0.0, 0.0, 1.0)
  • divide_triangle(v0, v3, v1, k)
  • glColor3f(0.0, 0.0, 0.0)
  • divide_triangle(v0, v2, v3, k)

47
Hidden-Surface Removal 1/3
48
Hidden-Surface Removal 2/3
  • Sorting?
  • Z-Buffer algorithm

49
Hidden-Surface Removal 3/3
  • void display()
  • glClear(GL_COLOR_BUFFER_BIT
    GL_DEPTH_BUFFER_BIT)
  • tetrahedron(n)
  • glFlush()

50
Summary and Notes
  • Graphics (primitives, attributes), viewing,
    control, communications with windows
  • Sample codes
Write a Comment
User Comments (0)
About PowerShow.com