1 / 26

Okay, you have learned …

main() { glViewport(0,0,300,200); glMatrixMode(GL_PROJECTION); glLoadIndentity(); gluOrtho2D(-1,1,-1,1); glBegin(GL_QUADS); glColor3f(1,1,0); glVertex2i(-0.5,-0.5); glVertex2i(+0.5,0); glVertex2i(+0.5,+0.5); glVertex2i(-0.5,+0.5); glEnd(); }.

birick
Download Presentation

Okay, you have learned …

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. main() { glViewport(0,0,300,200); glMatrixMode(GL_PROJECTION); glLoadIndentity(); gluOrtho2D(-1,1,-1,1); glBegin(GL_QUADS); glColor3f(1,1,0); glVertex2i(-0.5,-0.5); glVertex2i(+0.5,0); glVertex2i(+0.5,+0.5); glVertex2i(-0.5,+0.5); glEnd(); } Okay, you have learned … • OpenGL drawing • Viewport and World Window setup

  2. Modeling transformation Object Local Coordinates Object World Coordinates 2D Graphics Pipeline Graphics processing consists of many stages: (next page)

  3. Clipping window to viewport mapping Object subset Applying world window Object World Coordinates Object Screen coordinates Display Rasterization 2D Graphics Pipeline (2) Simple 2D Drawing Pipeline

  4. Clipping and Rasterization • OpenGL does these for you – no explicit OpenGL functions needed for doing clipping and rasterization • Clipping – Remove objects that are outside the world window • Rasterization (scan conversion) – Convert high level object descriptions to pixel colors in the frame buffer

  5. (xmax, ymax) (xmin, ymin) 2D Point Clipping • Determine whether a point (x,y) is inside or outside of the world window? If (xmin <= x <= xmax) and (ymin <= y <= ymax) then the point (x,y) is inside else the point is outside

  6. 2D Line Clipping • Determine whether a line is inside, outside, or partially inside • If a line is partially inside, we need to display the inside segment (xmax, ymax) (xmin, ymin)

  7. (Xmax, Ymax) p1 p2 (Xmin, Ymin) Trivial Accept Case • Lines that are clearly inside the world window - what are they? Xmin <= P1.x, P2.x <=xmax Ymin <=P1.y, P2.y <= Ymax

  8. p1 p2 Trivial Reject Case • Lines that are clearly outside the world window – what are they? • p1.x, p2.x <= XminOR • p1.x, p2.x >= Xmax OR • p1.y, p2.y <= ymin OR • p1.y, p2.y >= ymax

  9. p2 p1 Non-Trivial Cases • Lines that cannot be trivially rejected or accepted • One point inside, one point outside • Both points are outside, but not “trivially” outside • Need to find the line segments that are inside

  10. Rasterization (Scan Conversion) • Convert high-level geometry description to pixel colors in the frame buffer Viewport Transformation Rasterization

  11. Rasterization Algorithms • A fundamental computer graphics function • Determine the pixels’ colors, illuminations, textures, etc. • Implemented by graphics hardware • Rasterization algorithms • Lines • Circles • Triangles • Polygons

  12. Rasterize Lines • Why learn this? • Understand the discrete nature of computer graphics • Write pure device independent graphics programs (Palm graphics) • Become a graphics system developer

  13. 8 7 6 5 4 3 2 1 ? 0 1 2 3 4 5 6 7 8 9 10 11 12 Line Drawing Algorithm (1) Line: (3,2) -> (9,6)

  14. (x1,y1) dy (x0,y0) dx Line Drawing Algorithm (2) • Slope-intercept line equation • Y = mx + b • Given two end points (x0,y0), (x1, y1), how to compute m and b? m = (y1-y0) / (x1 – x0) = dy / dx b = y1 – m * x1

  15. (x1,y1) dy (x0,y0) dx Line Drawing Algorithm (3) Given the line equation y = mx + b, and end points (x0,y0) (x1, y1) Walk through the line: starting at (x0,y0) If we choose the next point in the line as X = x0 + Dx Y = ? Y = y0 + Dx * m = y0 + Dx * (dy/dx)

  16. (x0, y0) Line Drawing Algorithm (4) X = x0 Y = y0 (x1,y1) Illuminate pixel (x, int(Y)) Y = y0 + 1 * m X = x0 + 1 Illuminate pixel (x, int(Y)) Y = Y + 1 * m X = X + 1 Illuminate pixel (x, int(Y)) … Until X == x1

  17. Line Drawing Algorithm (5) • How about a line like this? Can we still increment X by 1 at each Step? The answer is No. Why? We don’t get enough samples How to fix it ? Increment Y

  18. Line Drawing Algorihtm (6) X = x0 Y = y0 (x1,y1) Illuminate pixel (x, int(Y)) X = x0 + 1 * 1/m Y = y0 + 1 Illuminate pixel (x, int(Y)) X = X + 1 /m Y = Y + 1 Illuminate pixel (x, int(Y)) … (x0,y0) Until Y == y1

  19. Line Drawing Algorithm (7) • The above is the simplest line drawing algorithm • Not very efficient • Optimized algorithms such integer DDA and Bresenhan algorithm are typically used • Not the focus of this course

  20. Triangle Rasterization Issues • Sliver

  21. Triangle Rasterization Issues • Moving Slivers

  22. Triangle Rasterization Issues • Shared Edge Ordering

  23. Edge Equations • An edge equation is simply the equation of the line defining that edge • Q: What is the implicit equation of a line? • A: Ax + By + C = 0 • Q: Given a point (x,y), what does plugging x & y into this equation tell us? • A: Whether the point is: • On the line: Ax + By + C = 0 • “Above” the line: Ax + By + C > 0 • “Below” the line: Ax + By + C < 0

  24. Edge Equations • Edge equations thus define two half-spaces:

  25. Edge Equations • And a triangle can be defined as the intersection of three positive half-spaces: A2x + B2y + C2 < 0 A2x + B2y + C2 > 0 A3x + B3y + C3 < 0 A3x + B3y + C3 > 0 A1x + B1y + C1 > 0 A1x + B1y + C1 < 0

  26. - - + + + - Edge Equations • So…simply turn on those pixels for which all edge equations evaluate to > 0:

More Related