clipping lines
Download
Skip this Video
Download Presentation
Clipping Lines

Loading in 2 Seconds...

play fullscreen
1 / 28

Clipping Lines - PowerPoint PPT Presentation


  • 128 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Clipping Lines' - bud


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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
clipping lines

Clipping Lines

Lecture 7

Wed, Sep 10, 2003

the graphics pipeline
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.
clipping
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?
clipping lines1
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.
clipping lines2
C

B

D

E

A

G

F

H

Clipping Lines
  • Before clipping
clipping lines3
C

B

D

E

A

F'

G

F

G'

H'

H

Clipping Lines
  • After clipping
the cohen sutherland clipping algorithm
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.
the cohen sutherland clipping algorithm1
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?
the cohen sutherland clipping algorithm2
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?
the cohen sutherland clipping algorithm3
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;

the cohen sutherland clipping algorithm4
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.
the cohen sutherland clipping algorithm5
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?
the cohen sutherland clipping algorithm6
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.
the cohen sutherland clipping algorithm13
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?
the cohen sutherland clipping algorithm14
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.
the cohen sutherland clipping algorithm15
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.
the cohen sutherland clipping algorithm18
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
the cohen sutherland clipping algorithm19
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)

the cohen sutherland clipping algorithm20
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.
example clip a line
Example: Clip a Line
  • LineClipper.cpp
ad