Lecture13a-2D_ViewingClipping-1
Lecture13a-2D_ViewingClipping-1
2
of
44
Contents
Windowing Concepts
Clipping
– Introduction
– Brute Force
– Cohen-Sutherland Clipping Algorithm
Area Clipping
– Sutherland-Hodgman Area Clipping
Algorithm
3
of
44
Windowing I
A scene is made up of a collection of objects
specified in world coordinates
World Coordinates
4
of
44
Windowing II
When we display a scene only those objects
within a particular window are displayed
Window
wymax
wymin
wxmin wxmax
World Coordinates
5
of
44
Windowing III
Because drawing things to a display takes
time we clip everything outside the window
Window
wymax
wymin
wxmin wxmax
World Coordinates
6
of
44
Clipping
For the image below consider which lines
and points should be kept and which ones
should be clipped
P4
Window P2
wymax
P6
P3
P1
P7 P5
P9
P8
wymin
P10
wxmin wxmax
7
of
44
Point Clipping
Easy - a point (x,y) is not clipped if:
wxmin ≤ x ≤ wxmax AND wymin ≤ y ≤ wymax
otherwise it is clipped
P4 Clipped
Clipped
Window P2
wymax
Clipped
P5
P1
P7 Points Within the Window
are Not Clipped
P9 P8
wymin
Clipped P10
wxmin wxmax
8
of
44
Line Clipping
Harder - examine the end-points of each line
to see if they are in the window or not
Situation Solution Example
Both end-points
Don’t know!
outside the window
9
of
44
Brute Force Line Clipping
Brute force line clipping can be performed as
follows:
– Don’t clip lines with both
end-points within the
window
– For lines with one end-
point inside the window
and one end-point
outside, calculate the
intersection point (using the equation of the
line) and clip from this point out
10
of
44
Brute Force Line Clipping (cont…)
– For lines with both end-
points outside the
window test the line for
intersection with all of
the window boundaries,
and clip appropriately
Window
wymax
P6 [0000]
P3 [0001]
P5 [0000] P12 [0010]
P7 [0001]
P9 [0000] P8 [0010]
wymin
P10 [0100]
P13 [0101] P14 [0110]
wxmin wxmax
16
of
44
Cohen-Sutherland: Lines In The Window
Window
wymax
P6 [0000]
P3 [0001]
P5 [0000] P12 [0010]
P7 [0001]
P9 [0000] P8 [0010]
wymin
P10 [0100]
P13 [0101] P14 [0110]
wxmin wxmax
17
of
Cohen-Sutherland: Lines Outside The
44 Window
Any lines with 1 in the same bit position for both end-points
is completely outside and must be clipped.
For example a line with 1010 code for one endpoint and
0010 for the other (line P11, P12) is completely to the right
of the clipping window.
P11 [1010]
P4 [1000]
Window
wymax
P6 [0000]
P3 [0001]
P5 [0000] P12 [0010]
P7 [0001]
P9 [0000] P8 [0010]
wymin
P10 [0100]
P13 [0101] P14 [0110]
wxmin wxmax
18
of
44
Cohen-Sutherland: Inside/Outside Lines
boundary P [0100]
10
Window
wymax
wymin
wxmin wxmax
26
of
44
Calculating Line Intersections
Intersection points with the window
boundaries are calculated using the line-
equation parameters
– Consider a line with the end-points (x1, y1)
and (x2, y2)
– The y-coordinate of an intersection with a
vertical window boundary can be calculated
using:
y = y1 + m (xboundary - x1)
where xboundary can be set to either wxmin or
wxmax
27
of
44
Calculating Line Intersections (cont…)
Example
Start at the left boundary
1,2 (out,out) → clip
2,3 (in,out) → save 1’, 3
3,4 (in,in) → save 4
4,5 (in,in) → save 5
5,6 (in,out) → save 5’
Saved points → 1’,3,4,5,5’
6,1 (out,out) → clip
Using these points we repeat the process
for the next boundary.
36
of
44
Weiler-Atherton Polygon Clipping
•Convex polygons are correctly clipped by
the Sutherland-Hodgman algorithm, but
concave polygons may be displayed with
extra areas (area inside the red circle), as
demonstrated in the following figure.
37
of
44
Weiler-Atherton Polygon Clipping
•This occurs when the clipped polygon should have two or
more separate sections. But since there is only one output
vertex list, the last vertex in the list is always joined to the
first vertex.
•There are several things we could do to correctly display
concave polygons.
•For one, we could split the concave polygon into two or
more convex polygons and process each convex polygon
separately
•Another possibility is to modify the Sutherland-Hodgman
approach to check the final vertex list for multiple vertex
points along any Clip window boundary and correctly join
pairs of vertices.
•Finally, we could use a more general polygon clipper, such
as either the Weiler-Atherton algorithm or the Weiler
algorithm.
38
of
44
Weiler-Atherton Polygon Clipping
•In Weiler-Atherton Polygon Clipping, the
vertex-processing procedures for window
boundaries are modified so that concave
polygons are displayed correctly.
•This clipping procedure was developed as a
method for identifying visible surfaces, and
so it can be applied with arbitrary polygon-
clipping regions.
39
of
44
Weiler-Atherton Polygon Clipping
•The basic idea in this algorithm is that
instead of always proceeding around the
polygon edges as vertices are processed,
we sometimes want to follow the window
boundaries.
•Which path we follow depends on the
polygon-processing direction (clockwise or
counterclockwise) and whether the pair of
polygon vertices currently being processed
represents an outside-to-inside pair or an
inside-to-outside pair.
40
of
44
Weiler-Atherton Polygon Clipping
• For clockwise processing of polygon
vertices, we use the following rules:
1. For an outside-to-inside pair of vertices,
follow the polygon boundary
2. For an inside-to-outside pair of vertices,
follow the window boundary in a
clockwise direction.
41
of
44
Weiler-Atherton Polygon Clipping
Example
•In the following figure, the processing direction in
the Weiler-Atherton algorithm and the resulting
clipped polygon is shown for a rectangular clipping
window.
42
of
44
Text Clipping
43
of
44
Text Clipping
44
of
44
Curve Clipping