Line Clipping in 2D - PowerPoint PPT Presentation

About This Presentation
Title:

Line Clipping in 2D

Description:

Top-Left. Bottom-Left. TBRL. 9/26/09. SCG 3023. 7. Cohen-Sutherland line clipping. 0000. 0100 ... BOTTOM .. if bit 3 = 1 .. .. .. RIGHT .. If bit 4 = 1 .. .. .. LEFT. ... – PowerPoint PPT presentation

Number of Views:682
Avg rating:3.0/5.0
Slides: 30
Provided by: chrisw6
Category:

less

Transcript and Presenter's Notes

Title: Line Clipping in 2D


1
Line Clipping in 2D
2
Why would we clip?
  • We clip objects to our view before rasterization.
    Why?
  • To avoid unnecessary work
  • pixel coordinate calculations
  • parameter interpolation
  • Any other reasons?

3
2D Viewing
4
What do we want out of clipping?
Clipping window
(xwmin, ywmax)
(xwmax, ywmax)
(xwmin, ywmin)
(xwmax, ywmin)
5
What are the basic steps?
  • Determine if the line needs clipping
  • May be able to trivially accept or reject some
    lines
  • Find intersections of line with viewport
  • We can use y mx b to do this
  • We want to determine which edges of the viewport
    to test lines against and avoid unnecessary
    tests.
  • Well start by categorizing the regions around
    the display.

6
Cohen-Sutherland line clipping
Top
Top-Right
Top-Left
Inside
Left
Right
Bottom
Bottom-Right
Bottom-Left
TBRL
7
Cohen-Sutherland line clipping
Region codes
T B R L
Bit 1 2 3 4
1000
1010
1001
0000
0001
0010
0100
0110
0101
8
Region coding
  • How would you decide which region an endpoint is
    in?
  • e.g
  • if (xltxwmin)(ygtymax) ? the point is at the
    Top-Left
  • Are there cases we can trivially accept or
    reject?
  • How would you test for those?

9
algorithm
  • Assign a region code for each endpoints.
  • If both endpoints have a region code 0000 ---?
    trivially accept these line.
  • Else, perform the logical AND operation for both
    region codes.
  • 3.1 if the result is not 0000 -? trivially reject
    the line.
  • 3.2 else (result 0000, need clipping)
  • 3.2.1. Choose an endpoint of the line that is
    outside the window.
  • 3.2.2. Find the intersection point at the
    window boundary (base on
  • region code).
  • 3.2.3. Replace endpoint with the
    intersection point and update the
  • region code.
  • 3.2.4. Repeat step 2 until we find a clipped
    line either trivially accepted
  • or trivially rejected.
  • 4. Repeat step 1 for other lines.

10
Carta alir
11
  • How to check for intersection?
  • if bit 1 1 ? there is intersection on TOP
    boundary.
  • if bit 2 1 ? .. .. ..
    .. BOTTOM ..
  • if bit 3 1 ? .. .. ..
    .. RIGHT ..
  • If bit 4 1 ? .. .. ..
    .. LEFT ..
  • How to find intersection point?
  • use line equation
  • intersection with LEFT or RIGHT boundary.
  • x xwmin (LEFT) x xwmax (RIGHT)
  • y y1 m(x x1)
  • intersection with BOTTOM or TOP boundary.
  • y ywmin (BOTTOM) y ywmax (TOP)
  • x x1 (y y1)/m

12
Trivial accept reject
B1
1000
1010
1001
D1
B2
C1
A2
0000
0001
0010
A1
C2
0100
0110
0101
D2
13
Example
algorithm
1000
1010
1001
1. A10000,A20000 2. (both 0000) Yes -gt
accept draw 3. 3.1 3.2
3.2.1 3.2.2 3.2.3 3.2.4
1. A10000,A20000 2. (both 0000) Yes -gt
accept draw 3. 3.1 3.2
3.2.1 3.2.2 3.2.3 3.2.4
0000
0001
0010
0100
0110
0101
14
Example
algorithm
1000
1001
1010
1. B11001,B21010 2. (both 0000) No 3. AND
Operation B1 ? 1001 B2 ? 1010 Result 1000
3.1 (not 0000) Yes ? reject 3.2
3.2.1 3.2.2 3.2.3 3.2.4
1. B11001,B21010 2. (both 0000) No 3. AND
Operation B1 ? 1001 B2 ? 1010 Result 1000
3.1 (not 0000) Yes ? reject 3.2
3.2.1 3.2.2 3.2.3 3.2.4
1. B11001,B21010 2. (both 0000) No 3. AND
Operation B1 ? 1001 B2 ? 1010 Result 1000
3.1 (not 0000) Yes ? reject 3.2
3.2.1 3.2.2 3.2.3 3.2.4
1. B11001,B21010 2. (both 0000) No 3. AND
Operation B1 ? 1001 B2 ? 1010 Result 1000
3.1 (not 0000) Yes ? reject 3.2
3.2.1 3.2.2 3.2.3 3.2.4
0000
0001
0010
0100
0110
0101
15
Example
algorithm
1000
1010
1001
1. C10001,C20000 2. (both 0000) No 3. AND
Operation 0001 0000 result
0000 3.1(not 0000) - No 3.2. (0000)-Yes
3.2.1. choose C1 3.2.2. Intersection
point, C1 at LEFT 3.2.3 C1 lt- C1
C1 0000 3.2.4 repeat 2
1. C10001,C20000 2. (both 0000) No 3. AND
Operation 0001 0000 result
0000 3.1(not 0000) - No 3.2. (0000)-Yes
3.2.1. choose C1 3.2.2. Intersection
point, C1 at LEFT 3.2.3 C1 lt- C1
C1 0000 3.2.4 repeat 2
1. C10001,C20000 2. (both 0000) No 3. AND
Operation 0001 0000 result
0000 3.1(not 0000) - No 3.2. (0000)-Yes
3.2.1. choose C1 3.2.2. Intersection
point, C1 at LEFT 3.2.3 C1 lt- C1
C1 0000 3.2.4 repeat 2
1. C10001,C20000 2. (both 0000) Yes -gt
accept draw 3. 3.1 3.2 3.2.1
3.2.2 3.2.3 3.2.4
0000
0010
0001
0100
0110
0101
16
Example
algorithm
1000
1010
1001
0000
0010
0001
C1
C2
0100
0110
0101
17
Example
(150, 100)
(10, 10)
Diberi tetingkap ketipan seperti di atas.
Sekiranya titik P1 ialah (0, 120) dan titik
P2(130, 5) . Dapatkan titik-titik persilangan
yang membentuk garisan selepas proses ketipan.
Gunakan algoritma Cohen-Sutherland
18
answer
1. P11001, P20100 2. (both 0000) yes ? ACCEPT
DRAW Endpoints after clipping P1 (22, 100)
P2 124, 10)
  • 1. P11001, P20100
  • 2. (both 0000) No
  • 3. AND Operation
  • B1 ? 1001
  • B2 ? 0100
  • Result 0000
  • 3.1 (not 0000) no
  • 3.2 (0000) yes
  • 3.2.1choose P1
  • 3.2.2 intersection with LEFT boundary
  • m (5-120)/(130-0) -0.8846
  • y y1 m(x x1) where x 10
  • y 120 -0.8846(10-0) 111.15
    111
  • P1 (10, 111)
  • 3.2.3 update region code P1 1000 (TOP)
  • 3.2.4 repeat step 2
  • 1. P11001, P20100
  • 2. (both 0000) No
  • 3. AND Operation
  • B1 ? 1000
  • B2 ? 0100
  • Result 0000
  • 3.1 (not 0000) no
  • 3.2 (0000) yes
  • 3.2.1choose P1
  • 3.2.2 intersection with TOP boundary
  • m (5-120)/(130-0) -0.8846
  • x x1 (y y1)/m where y 100
  • x 10 (100-111)/ -0.8846 22.44
    22
  • P1 (22, 100)
  • 3.2.3 update region code P1 0000
  • 3.2.4 repeat step 2
  • 1. P11001, P20100
  • 2. (both 0000) No
  • 3. AND Operation
  • B1 ? 0000
  • B2 ? 0100
  • Result 0000
  • 3.1 (not 0000) no
  • 3.2 (0000) yes
  • 3.2.1choose P2
  • 3.2.2 intersection with BOTTOM boundary
  • m (5-120)/(130-0) -0.8846
  • x x1 (y y1)/m where y 10
  • x 130 (10-5)/ -0.8846 124.35
    124
  • P2 (124, 10)
  • 3.2.3 update region code P2 0000
  • 3.2.4 repeat step 2

19
The good and the bad
  • Whats the maximum number of clips for an
    accepted line?
  • Whats the maximum number of clips for a rejected
    line?
  • Good
  • Easy to implement
  • Early accept/reject tests
  • Bad
  • Slow for many clipped lines

20
Liang-Barsky Line Clipping
  • Based on parametric equation of a line
  • x x1 u.?x
  • y y1 u.?y
  • ?x x2 - x1 , ?y y2 - y1
  • Similarly, the clipping window is represented by
  • xwmin ? x1 u.?x ? xwmax
  • ywmin ? y1 u.?y ? ywmax
  • or,
  • u. pk ? qk k 1, 2, 3, 4
  • where

0 ? u ? 1
p1 - ?x , q1 x1 xwmin p2 ?x , q2 xwmax-
x1 p3 - ?y , q3 y1 ywmin p4 ?y , q4
ywmax - y1
21
Liang-Barsky (continued)
  • Clipped line will be
  • x1 x1 u1. ?x u1 ? 0
  • y1 y1 u1. ?y
  • x2 x1 u2. ?x u2 ? 1
  • y2 y2 u2. ?y
  • Reject line with pk 0 and qk lt 0.
  • How do we calculate u1 u2 ?
  • we will get 4 values of uk!

u q/p
22
Liang-Barsky (continued)
  • u1 maximum value between 0 and u (for pk lt 0)
  • u2 minimum value between u (for pk gt 0) and 1
  • Consider our previous example where
  • xwmin 0, xwmax 100
  • ywmin 0, ywmax 50
  • And the line we want to clip connects P1(10, 10)
    and P2(110, 40)

23
Liang-Barsky (example)
  • Lets construct a table

k pk qk uk
1 ?x -(110-10) -100 x1 xwmin 10-0 10
2 ?x 110-10100 xwmax- x1 100 10 90
3 ?y -(40-10) -30 y1 ywmin 100 10
4 ?y 40-1030 ywmax - y1 50 10 40
24
Liang-Barsky (example)
  • Lets construct a table

k pk qk uk
1 ?x -(110-10) -100 x1 xwmin 10-0 10
2 ?x 110-10100 xwmax- x1 100 10 90
3 ?y -(40-10) -30 y1 ywmin 100 10
4 ?y 40-1030 ywmax - y1 50 10 40
u1
u1
25
Liang-Barsky (example)
  • u1 maximum value between 0 and u (for pk lt 0)!

k pk qk uk
1 ?x -(110-10) -100 x1 xwmin 10-0 10 u10/(-100) -1/10
2 ?x 110-10100 xwmax- x1 100 10 90
3 ?y -(40-10) -30 y1 ywmin 100 10 u10/(-30) -1/3
4 ?y 40-1030 ywmax - y1 50 10 40
u1 0!
u1
u1
26
Liang-Barsky (example)
  • u2 minimum value between u (for pk gt 0) and 1

k pk qk uk
1 ?x -(110-10) -100 x1 xwmin 10-0 10 u10/(-100) -1/10
2 ?x 110-10100 xwmax- x1 100 10 90
3 ?y -(40-10) -30 y1 ywmin 100 10 u10/(-30) -1/3
4 ?y 40-1030 ywmax - y1 50 10 40
u1 0!
u2
u2
27
Liang-Barsky (example)
  • u2 minimum value between u (for pk gt 0) and 1

k pk qk uk
1 ?x -(110-10) -100 x1 xwmin 10-0 10 u10/(-100) -1/10
2 ?x 110-10100 xwmax- x1 100 10 90 u90/100 9/10
3 ?y -(40-10) -30 y1 ywmin 100 10 u10/(-30) -1/3
4 ?y 40-1030 ywmax - y1 50 10 40 u40/30) 4/3
u1 0!
u2 9/10!
u2
u2
28
Liang-Barsky (example)
  • If u1 gt u2 then reject line (completely outside
    clipping window!)
  • Clipped line will be
  • x1 x1 u1. ?x (u1 0)
  • 10 0.(100) 10
  • y1 y1 u1. ?y
  • 10 0.(30) 10
  • x2 x1 u2. ?x (u2 9/10)
  • 10 0.9(100) 100
  • y2 y2 u2. ?y
  • 10 0.9(30) 37

Homework Use different values of xwmin, xwmax,
ywmin , ywmax , P1 and P2 for exercise.
29
algorithm
  • 1.  Initial value u1 0, u2 1
  • 2.      For k 1, 2, 3, 4
  • 2.1 calculate Pk dan qk
  • 2.2 calculate rk qk/ Pk
  • 2.2 if (Pk lt0) find u1 ( if (rkgtu1), u1rk )
  • 2.3 if (Pk gt 0) find u2 ( if (rkltu2), u2rk )
  • 2.4 if (Pk 0) and (qklt 0) reject the line
    goto step 6 
  • 3.    If (u1gt u2) reject the line goto step 6
  • 5.    Find the clipped line
  •  
  • x1 x1 u1. ?x
  • y1 y1 u1. ?y
  •  
  • x2 x1 u2. ?x
  • y2 y1 u2. ?y
  •  
  • 6.      Repeat step 1 5 for other lines.
  •  
Write a Comment
User Comments (0)
About PowerShow.com