Graphics
2D Viewing
Dr. G. Kumaravelan
1 Graphics Lab @ Korea University
Contents
CGVR
Clipping
Cohen-Sutherland Line Clipping
Sutherland-Hodgeman Polygon Clipping
Text Clipping
Curve Clipping
Blanking
Viewport Transformation
Scan Conversion
Summary of Transformation
2 Graphics Lab @ Korea University
Clipping
CGVR
Avoid Drawing Parts of Primitives Outside
Window
Window defines part of scene being viewed
Must draw geometric primitives only inside window
World
Coordinates
3 Graphics Lab @ Korea University
Clipping
CGVR
Avoid Drawing Parts of Primitives Outside
Window
Window defines part of scene being viewed
Must draw geometric primitives only inside window
4 Graphics Lab @ Korea University
Clipping
CGVR
Avoid Drawing Parts of Primitives Outside
Window
Points
Lines
Polygons
Circles
etc.
5 Graphics Lab @ Korea University
Point Clipping
CGVR
Is Point(x,y) Inside the Clip Window?
wy2
Inside =
(x>=wx1) &&
(x, y) (x<=wx2) &&
(y>=wy1) &&
(y<=wy2);
wy1
wx1 wx2
6 Graphics Lab @ Korea University
Line Clipping
CGVR
Find the Part of a Line Inside the Clip
Window
P7
P1
P4 P8
P3
P2
P6
P10
P5 P9
Before Clipping
7 Graphics Lab @ Korea University
Line Clipping
CGVR
Find the Part of a Line Inside the Clip
Window
P’7
P4 P’8
P3
P6
P’5
After Clipping
8 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Use Simple Tests to Classify Easy Cases
First
P7
P1
P4 P8
P3
P2
P6
P10
P5 P9
9 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Classify Some Lines Quickly by AND of Bit Codes
Representing Regions of Two Endpoints (Must Be 0)
1001 P7 0001 0101
Bit 4
P1
P4 P8
1000 P3 0000 0100
P2
P6
P10
Bit 3
1010 P5 0010 P9 0110
Bit 1 Bit 2
10 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Classify Some Lines Quickly by AND of Bit Codes
Representing Regions of Two Endpoints (Must Be 0)
1001 P7 0001 0101
Bit 4
P1
P4 P8
1000 P3 0000 0100
P2
P6
P10
Bit 3
1010 P5 0010 P9 0110
Bit 1 Bit 2
11 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Classify Some Lines Quickly by AND of Bit Codes
Representing Regions of Two Endpoints (Must Be 0)
1001 P7 0001 0101
Bit 4
P4 P8
1000 P3 0000 0100
P6
P10
Bit 3
1010 P5 0010 P9 0110
Bit 1 Bit 2
12 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Compute Intersections with Window Boundary for
Lines That Can’t be Classified Quickly
1001 P7 0001 0101
Bit 4
P4 P8
1000 P3 0000 0100
P6
P10
Bit 3
1010 P5 0010 P9 0110
Bit 1 Bit 2
13 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Compute Intersections with Window Boundary for
Lines That Can’t be Classified Quickly
1001 P7 0001 0101
Bit 4
P4 P8
1000 P3 0000 0100
P6
P10
Bit 3
1010 P5 0010 P9 0110
Bit 1 Bit 2
14 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Compute Intersections with Window Boundary for
Lines That Can’t be Classified Quickly
1001 P7 0001 0101
Bit 4
P4 P8
1000 P3 0000 0100
P6
P10
Bit 3
1010 P’5 0010 0110
P9
Bit 1 Bit 2
15 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Compute Intersections with Window Boundary for
Lines That Can’t be Classified Quickly
1001 P7 0001 0101
Bit 4
P4 P8
1000 P3 0000 0100
P6
P10
Bit 3
1010 P’5 0010 0110
P9
Bit 1 Bit 2
16 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Compute Intersections with Window Boundary for
Lines That Can’t be Classified Quickly
1001 P7 0001 0101
Bit 4
P4 P8
1000 P3 0000 0100
P6
P10
Bit 3
1010 P’5 0010 0110
P9
Bit 1 Bit 2
17 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Compute Intersections with Window Boundary for
Lines That Can’t be Classified Quickly
1001 P7 0001 0101
Bit 4
P4 P8
1000 P3 0000 0100
P6
P10
Bit 3
1010 P’5 0010 0110
P9
Bit 1 Bit 2
18 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Compute Intersections with Window Boundary for
Lines That Can’t be Classified Quickly
1001 0001
P’7 0101
Bit 4
P4 P8
1000 P3 0000 0100
P6
P10
Bit 3
1010 P’5 0010 0110
P9
Bit 1 Bit 2
19 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Compute Intersections with Window Boundary for
Lines That Can’t be Classified Quickly
1001 0001
P’7 0101
Bit 4
P4 P8
1000 P3 0000 0100
P6
P10
Bit 3
1010 P’5 0010 0110
P9
Bit 1 Bit 2
20 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Compute Intersections with Window Boundary for
Lines That Can’t be Classified Quickly
1001 0001
P’7 0101
Bit 4
P4 P’8
1000 P3 0000 0100
P6
P10
Bit 3
1010 P’5 0010 0110
P9
Bit 1 Bit 2
21 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Compute Intersections with Window Boundary for
Lines That Can’t be Classified Quickly
1001 0001
P’7 0101
Bit 4
P4 P’8
1000 P3 0000 0100
P6
P10
Bit 3
1010 P’5 0010 0110
P9
Bit 1 Bit 2
22 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Compute Intersections with Window Boundary for
Lines That Can’t be Classified Quickly
1001 0001
P’7 0101
Bit 4
P4 P’8
1000 P3 0000 0100
P6
P10
Bit 3
1010 P’5 0010 0110
P9
Bit 1 Bit 2
23 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Compute Intersections with Window Boundary for
Lines That Can’t be Classified Quickly
1001 0001
P’7 0101
Bit 4
P4 P’8
1000 P3 0000 0100
P6
P10
Bit 3
1010 P’5 0010 0110
P9
Bit 1 Bit 2
24 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Compute Intersections with Window Boundary for
Lines That Can’t be Classified Quickly
1001 0001
P’7 0101
Bit 4
P4 P’8
1000 P3 0000 0100
P6
P10
Bit 3
1010 P’5 0010 P’90110
Bit 1 Bit 2
25 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Compute Intersections with Window Boundary for
Lines That Can’t be Classified Quickly
1001 0001
P’7 0101
Bit 4
P4 P’8
1000 P3 0000 0100
P6
P10
Bit 3
1010 P’5 0010 P’90110
Bit 1 Bit 2
26 Graphics Lab @ Korea University
Cohen-Sutherland Line
Clipping CGVR
Compute Intersections with Window Boundary for
Lines That Can’t be Classified Quickly
1001 0001
P’7 0101
Bit 4
P4 P’8
1000 P3 0000 0100
P6
Bit 3
1010 P’5 0010 0110
Bit 1 Bit 2
27 Graphics Lab @ Korea University
Polygon Clipping
CGVR
Find the Part of a Polygon Inside the Clip
Window?
Before Clipping
28 Graphics Lab @ Korea University
Polygon Clipping
CGVR
Find the Part of a Polygon Inside the Clip
Window?
After Clipping
29 Graphics Lab @ Korea University
Sutherland-Hodgeman Polygon
Clipping CGVR
Clip to Each Window Boundary One at a
Time
30 Graphics Lab @ Korea University
Sutherland-Hodgeman Polygon
Clipping CGVR
Clip to Each Window Boundary One at a
Time
31 Graphics Lab @ Korea University
Sutherland-Hodgeman Polygon
Clipping CGVR
Clip to Each Window Boundary One at a
Time
32 Graphics Lab @ Korea University
Sutherland-Hodgeman Polygon
Clipping CGVR
Clip to Each Window Boundary One at a
Time
33 Graphics Lab @ Korea University
Sutherland-Hodgeman Polygon
Clipping CGVR
Clip to Each Window Boundary One at a
Time
34 Graphics Lab @ Korea University
Clipping to a Boundary
CGVR
Do Inside Test for Each Point in Sequence,
Insert New Points When Cross Window Boundary,
Remove Points Outside Window Boundary
P2 P1
Window
Boundary Inside
Outside
P3 P5
P4
35 Graphics Lab @ Korea University
Clipping to a Boundary
CGVR
Do Inside Test for Each Point in Sequence,
Insert New Points When Cross Window Boundary,
Remove Points Outside Window Boundary
P2 P1
Window
Boundary Inside
Outside
P3 P5
P4
36 Graphics Lab @ Korea University
Clipping to a Boundary
CGVR
Do Inside Test for Each Point in Sequence,
Insert New Points When Cross Window Boundary,
Remove Points Outside Window Boundary
P2 P1
Window
Boundary Inside
Outside
P3 P5
P4
37 Graphics Lab @ Korea University
Clipping to a Boundary
CGVR
Do Inside Test for Each Point in Sequence,
Insert New Points When Cross Window Boundary,
Remove Points Outside Window Boundary
P2 P1
Window
Boundary Inside
Outside
P3 P5
P4
38 Graphics Lab @ Korea University
Clipping to a Boundary
CGVR
Do Inside Test for Each Point in Sequence,
Insert New Points When Cross Window Boundary,
Remove Points Outside Window Boundary
P2 P1
Window
Boundary P’ Inside
Outside
P3 P5
P4
39 Graphics Lab @ Korea University
Clipping to a Boundary
CGVR
Do Inside Test for Each Point in Sequence,
Insert New Points When Cross Window Boundary,
Remove Points Outside Window Boundary
P2 P1
Window
Boundary P’ Inside
Outside
P3 P5
P4
40 Graphics Lab @ Korea University
Clipping to a Boundary
CGVR
Do Inside Test for Each Point in Sequence,
Insert New Points When Cross Window Boundary,
Remove Points Outside Window Boundary
P2 P1
Window
Boundary P’ Inside
Outside
P3 P5
P4
41 Graphics Lab @ Korea University
Clipping to a Boundary
CGVR
Do Inside Test for Each Point in Sequence,
Insert New Points When Cross Window Boundary,
Remove Points Outside Window Boundary
P2 P1
Window
Boundary P’ P” Inside
Outside
P3 P5
P4
42 Graphics Lab @ Korea University
Clipping to a Boundary
CGVR
Do Inside Test for Each Point in Sequence,
Insert New Points When Cross Window Boundary,
Remove Points Outside Window Boundary
P2 P1
Window
Boundary P’ P” Inside
Outside
43 Graphics Lab @ Korea University
2D Rendering Pipeline
CGVR
3D Primitives
2D Primitives
Clip portions of geometric primitives
Clipping residing outside window
Transform the clipped primitives
Viewport Transformation from screen to image coordinates
Fill pixel representing primitives
Scan Conversion in screen coordinates
Image
44 Graphics Lab @ Korea University
Viewport Transformation
CGVR
Transform 2D Geometric Primitives from
Screen Coordinate System (Projection
Coordinates) to Image Coordinate System
(Device Coordinates)
Screen Image
Viewport
45 Graphics Lab @ Korea University
Window vs. Viewport
CGVR
Window
World-coordinate area selected for display
What is to be viewed
Viewport
Area on the display device to which a window is
mapped
Where it is to be displayed
46 Graphics Lab @ Korea University
Viewport Transformation
CGVR
Window-to-Viewport Mapping
Window Viewport
wy2 vy2
(wx, wy) (vx, vy)
wy1 vy1
wx1 wx2 vx1 vx2
Screen Coordinates Image Coordinates
vx = vx1 + (wx – wx1) * (vx2 – vx1) / (wx2 – wx1);
vy = vy1 + (wy – wy1) * (vy2 – vy1) / (wy2 – wy1);
47 Graphics Lab @ Korea University
Cont…
CGVR
48 Graphics Lab @ Korea University
Text Clipping
CGVR
All or nothing text clipping
All or nothing Character Clipping
49 Graphics Lab @ Korea University