1 / 28

Clipping Lines

Clipping Lines. Lecture 7 Wed, Sep 10, 2003. The Graphics Pipeline. From time to time we will discuss the graphics pipeline . The graphics pipeline is the sequence of operations that are performed on primitives to render them on the screen as collections of colored pixels.

bud
Télécharger la présentation

Clipping Lines

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. Clipping Lines Lecture 7 Wed, Sep 10, 2003

  2. The Graphics Pipeline • From time to time we will discuss the graphics pipeline. • The graphics pipeline is the sequence of operations that are performed on primitives to render them on the screen as collections of colored pixels. • We have discussed the framebuffer. • Now we will discuss 2-dimensional clipping of lines.

  3. Clipping • Any object that is not entirely within the viewport must be clipped. • That is, the part that is outside the viewport must be eliminated before the object is drawn. • The graphics pipeline, does this “automatically.” • Why is it necessary to clip?

  4. Clipping Lines • If a line is partially in the viewport, then we need to recalculate its endpoints. • In general, there are four possible cases. • The line is entirely within the viewport. • The line is entirely outside the viewport. • One endpoint is in and the other is out. • Both endpoints are out, but the middle part is in.

  5. C B D E A G F H Clipping Lines • Before clipping

  6. C B D E A F' G F G' H' H Clipping Lines • After clipping

  7. ymax ymin xmax xmin The Cohen-Sutherland Clipping Algorithm • Let the x-coordinates of the window boundaries be xmin and xmax and let the y-coordinates be ymin and ymax.

  8. The Cohen-Sutherland Clipping Algorithm • For each endpoint p of a line segment we will define a codeword c3c2c1c0 consisting of 4 true/false values. • c3 = true, if p is left of the window. • c2 = true, if p is above the window. • c1 = true, if p is right of the window. • c0 = true, if p is below the window. • How many different values are possible for a codeword?

  9. The Cohen-Sutherland Clipping Algorithm • How many different combinations of values are possible for the codewords of the two endpoints of a segment? • How do we compute a codeword?

  10. The Cohen-Sutherland Clipping Algorithm • Consider the vertical edge x = xmin. (You can do the other edges.) • Compare the x-coordinate of p to xmin. • If it is less, then “set” bit 3 of the codeword. if (p.x < xmin) c = 1 << 3;

  11. The Cohen-Sutherland Clipping Algorithm • After the codewords for both endpoints are computed, we divide the possibilities into three cases: • Trivial accept – both codewords are FFFF. • Trivial reject – both codewords have T in the same position. • Indeterminate so far – Investigate further.

  12. The Cohen-Sutherland Clipping Algorithm • What is the quickest way to separate the cases? • Use bitwise “and” and “or.” • If ((codeword1 | codeword2) == 0) then we trivially accept. • Why? • If ((codeword1 & codeword2) != 0) then we trivially reject. • Why?

  13. The Cohen-Sutherland Clipping Algorithm • What about the third case? • We clip against each edge of the window, in sequence, as necessary. • After clipping against an edge, we may test again for trivial acceptance or trivial rejection before moving on to the next edge.

  14. The Cohen-Sutherland Clipping Algorithm

  15. clip The Cohen-Sutherland Clipping Algorithm

  16. clip The Cohen-Sutherland Clipping Algorithm

  17. clip The Cohen-Sutherland Clipping Algorithm

  18. clip The Cohen-Sutherland Clipping Algorithm

  19. The Cohen-Sutherland Clipping Algorithm

  20. The Cohen-Sutherland Clipping Algorithm • This raises some questions? • What is the worst case? • What is the best case? • How do we decide whether to clip against a particular edge? • If we do clip, how to we determine the new endpoint?

  21. The Cohen-Sutherland Clipping Algorithm • Consider again the vertical edge x = xmin. (You can do the other edges.) • Compute codeword1 ^ codeword2. • This shows where they disagree. • Why? • “And” this with (1 << 3). • If result = 1, then clip. • Else do not clip.

  22. The Cohen-Sutherland Clipping Algorithm • If we clip, then the new point will be on the line x = xmin. • So its x-coordinate will be xmin. • We must calculate its y-coordinate.

  23. x = xmin q r p The Cohen-Sutherland Clipping Algorithm

  24. x = xmin q r p The Cohen-Sutherland Clipping Algorithm

  25. x = xmin q q.y – p.y r r.y – p.y p xmin – p.x q.x – p.x The Cohen-Sutherland Clipping Algorithm

  26. The Cohen-Sutherland Clipping Algorithm • Then (r.y – p.y)/(xmin – p.x) = (q.y – p.y)/(q.x – p.x) • So r.y = p.y + (xmin – p.x)(q.y – p.y)/(q.x – p.x)

  27. The Cohen-Sutherland Clipping Algorithm • This used to be done in software. • Now it is done in hardware, in the graphics pipeline. • Should it be done before or after the line is rasterized? • We will discuss clipping polygons and clipping in 3D later.

  28. Example: Clip a Line • LineClipper.cpp

More Related