Unit II Windowing and Clipping
Unit II Windowing and Clipping
Windowing
• The world or model coordinate system is used to define the position of
objects in the natural world.
World Coordinates
• When we display a scene, only those objects within a
particular window are displayed
Window
wymax
wymin
wxmin wxmax
World Coordinates
• Because drawing things to a display takes time
we clip everything outside the window
Window
wymax
wymin
wxmin wxmax
World Coordinates
# Clipping
• When a window is "placed" on the world, only certain objects and parts of objects
which are inside the window can be seen. Points and lines which are outside the
window are "cut off" from view. This process of "cutting off" parts of the image of
the world is called Clipping.
or
Window P2
wymax
P6
P3
P1
P7 P5
P9
P8
wymin
P10
wxmin wxmax
Point Clipping
• 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
Line Clipping
• 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
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
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
Cohen-Sutherland: Lines In The Window
Lines completely contained within the window
boundaries have region code [0000] for both
end-points so are not clipped
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
Cohen-Sutherland: Lines Outside The Window
Any lines with a common set digit in the region
codes of both end-points can be clipped
– The AND operation can efficiently check this
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
Cohen-Sutherland: Other Lines
• Lines that cannot be identified as completely
inside or outside the window may or may not
cross the window interior
• These lines are processed as follows:
– Compare an end-point outside the window to a
boundary (choose any order in which to consider
boundaries e.g. left, right, bottom, top) and
determine how much can be discarded
– If the remainder of the line is entirely inside or
outside the window, retain it or clip it respectively
Cohen-Sutherland: Other Lines (cont…)
– Otherwise, compare the remainder of the line against
the other window boundaries
– Continue until the line is either discarded or a
segment inside the window is found
• We can use the region codes to determine which
window boundaries should be considered for
intersection
– To check if a line crosses a particular boundary we
compare the appropriate bits in the region codes of its
end-points
– If one of these is a 1 and the other is a 0 then the line
crosses the boundary
Cohen-Sutherland Examples
• Consider the line P9 to P10
below Window
wymax
– Start at P10
– From the region codes
of the two end-points we wy P [0000]
9
min
know the line doesn’t P ’ [0000]
10
P [0100]
cross the left or right 10
wxmin wxmax
boundary
Calculate the intersection of the line with the bottom
boundary to generate point P10’
The line P9 to P10’ is completely inside the window so
is retained
Cohen-Sutherland Examples (cont…)
Window
wymax
wymin
wxmin wxmax
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
Calculating Line Intersections (cont…)
Original Area Clip Left Clip Right Clip Top Clip Bottom
Sutherland-Hodgman Area Clipping
Algorithm (cont…)
• To clip an area against an individual boundary:
– Consider each vertex in turn against the boundary
– Vertices inside the boundary are saved for clipping
against the next boundary
– Vertices outside the boundary are clipped
– If we proceed from a point inside the boundary to
one outside, the intersection of the line with the
boundary is saved
– If we cross from the outside to the inside intersection
point and the vertex are saved
Sutherland-Hodgman Example
• Each example S
shows the point
S
being processed (P) P
I
and the previous P
point (S) Save Point P Save Point I
boundary in
question
S
No Points Saved Save Points I & P
Other Area Clipping Concerns
• Clipping concave areas can be a little more tricky
as often superfluous lines must be removed
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
Cohen-Sutherland Clipping Algorithm
• 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
Clipping
• Point clipping is easy:
– For point (x,y) the point is not clipped if
wxmin ≤ x ≤P wxmax AND wymin ≤ y ≤ wymax
4
Window P2
wymax
P6
P3
P1
P7 P5
P9
P8
wymin
P10
wxmin wxmax
Before Clipping