Clipping lines
This presentation is the property of its rightful owner.
Sponsored Links
1 / 28

Clipping Lines PowerPoint PPT Presentation


  • 101 Views
  • Uploaded on
  • Presentation posted in: General

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.

Download Presentation

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.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 algorithm7

The Cohen-Sutherland Clipping Algorithm


The cohen sutherland clipping algorithm8

clip

The Cohen-Sutherland Clipping Algorithm


The cohen sutherland clipping algorithm9

clip

The Cohen-Sutherland Clipping Algorithm


The cohen sutherland clipping algorithm10

clip

The Cohen-Sutherland Clipping Algorithm


The cohen sutherland clipping algorithm11

clip

The Cohen-Sutherland Clipping Algorithm


The cohen sutherland clipping algorithm12

The Cohen-Sutherland Clipping Algorithm


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 algorithm16

x = xmin

q

r

p

The Cohen-Sutherland Clipping Algorithm


The cohen sutherland clipping algorithm17

x = xmin

q

r

p

The Cohen-Sutherland Clipping Algorithm


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


  • Login