Upload
ravish-nirvan
View
218
Download
0
Embed Size (px)
Citation preview
7/31/2019 Lecture14b Clipping
1/16
Line Clipping
Point clipping easy: Just check the inequalities
xmin < x < xmax
ymin < y < ymax
Line clipping more tricky
7/31/2019 Lecture14b Clipping
2/16
Cohen-Sutherland Line Clipping
Divide 2D space into 3x3 regions.
Middle region is the clipping window.
Each region is assigned a 4-bit code. Bit 1 is set to 1 if the region is to the left of
the clipping window, 0 otherwise. Similarly
for bits 2, 3 and 4.
4 3 2 1
Top Bottom Right Left
7/31/2019 Lecture14b Clipping
3/16
Cohen-Sutherland Line Clipping
0000
1001
0001
0101 0100 0110
0010
10101000
7/31/2019 Lecture14b Clipping
4/16
Cohen-Sutherland Line Clipping
To clip a line, find out which regions itstwo endpoints lie in.
If they are both in region 0000, then its
completely in. If the two region numbers both have a 1 in
the same bit position, the line is
completely out. Otherwise, we have to do some more
calculations.
7/31/2019 Lecture14b Clipping
5/16
Cohen-Sutherland Line Clipping
For those lines that we cannot immediatelydetermine, we successively clip against eachboundary.
Then check the new endpoint for its region code.
How to find boundary intersection: To find ycoordinate at vertical intersection, substitute xvalue at the boundary into the line equation ofthe line to be clipped.
Other algorithms: Faster: Cyrus-Beck Even faster: Liang-Barsky Even faster: Nichol-Lee-Nichol
7/31/2019 Lecture14b Clipping
6/16
Sutherland-Hodgman
Polygon Clipping Input each edge (vertex pair) successively.
Output is a new list of vertices.
Each edge goes through 4 clippers.
The rule for each edge for each clipper is: If first input vertex is outside, and second is inside,
output the intersection and the second vertex
If first both input vertices are inside, then just output
second vertex If first input vertex is inside, and second is outside,
output is the intersection
If both vertices are outside, output is nothing
7/31/2019 Lecture14b Clipping
7/16
Sutherland-Hodgman Polygon Clipping:
Four possible scenarios at each clipper
outside inside
v1v1
v2
outside inside
v1
v2
outside inside
v1
v1
v2
outside inside
v1
v2
Outside to inside:
Output: v1 and v2
Inside to inside:
Output: v2
Inside to outside:
Output: v1
Outside to outside:
Output: nothing
7/31/2019 Lecture14b Clipping
8/16
Sutherland-Hodgman Polygon Clipping
v2
v1
v3
Right
Clipper
Bottom
Clipper
Top
Clipper
Left
Clipper
v1v2
v2v3
v3v1
v1
v2
v2
v2
v3v1
v2v2
v2v3
v3v1
v1v2
v2
v3
v1
v2 v2v2
v2v3
v3v1
v1v2
v3
Figure 6-27, page 332
v2
v1v2
v2 v2v2
v2v1
v1v2
v2v2
v1
v2
v2
v2
Edges Output Edges Output Edges Output Edges Output
Final
7/31/2019 Lecture14b Clipping
9/16
Weiler-Atherton Polygon Clipping
Sutherland-Hodgman
Weiler-Atherton
7/31/2019 Lecture14b Clipping
10/16
Clipping in 3D
Suppose the view volume has been
normalized. Then the clipping boundaries
are just:
xwmin = -1
ywmin = -1
zwmin = -1
xwmax = 1
ywmax = 1
zwmax = 1
7/31/2019 Lecture14b Clipping
11/16
Clipping Homogeneous
Coordinates in 3D Coordinates expressed in homogeneous
coordinates After geometric, viewing and projection
transformations, each vertex is: (xh, yh, zh, h)
Therefore, assuming coordinates have beennormalized to a (-1,1) volume, a point (xh, yh, zh, h) isinside the view volume if:
-1 < < 1 and -1 < < 1 and -1 < < 1
xh
h
yh
h
zh
h
Suppose that h > 0, which is true in normal cases, then
-h < xh < h and -h < yh < h and -h < zh < h
7/31/2019 Lecture14b Clipping
12/16
Remember Cohen-Sutherland 2D
Line Clipping Region Codes?
Divide 2D space into 3x3 regions.
Middle region is the clipping window.
Each region is assigned a 4-bit code. Bit 1 is set to 1 if the region is to the left of
the clipping window, 0 otherwise. Similarly
for bits 2, 3 and 4.
4 3 2 1
Top Bottom Right Left
7/31/2019 Lecture14b Clipping
13/16
Cohen-Sutherland Line Clipping
Region Codes in 2D
0000
1001
0001
0101 0100 0110
0010
10101000
7/31/2019 Lecture14b Clipping
14/16
3D Cohen-Sutherland Region
Codes
Simply use 6 bits instead of 4.
4 3 2 1
Far Near Top Bottom Right Left
6 5
Example: If h + xh < 0, then bit 1 is set to 1.
This is because if -h > xh, then the point is to the left of the viewing volume.
7/31/2019 Lecture14b Clipping
15/16
Clipping Polygons
First, perform trivial acceptance and
rejection using, for example, its coordinate
extents.
Polygons usually split into triangle strips.
Then each triangle is clipped using 3D
extension of the Sutherland-Hodgman
method
7/31/2019 Lecture14b Clipping
16/16
Arbitrary Clipping Planes
Can specify an arbitrary clipping plane: Ax + By
+ Cz + D = 0.
Therefore, for any point, if Ax + By + Cz + D < 0,
it is not shown. To clip a line against an arbitrary plane,
If both end-points are in, then the line is in
If both end-points are out, then the line is out
If one end-point is in, and one is out, then we need to
find the intersection of the line and the plane