2. 2
of
30
Contents
Windowing Concepts
Clipping
– Introduction
– Brute Force
– Cohen-Sutherland Clipping Algorithm
Area Clipping
– Sutherland-Hodgman Area Clipping
Algorithm
3. 3
of
30
Windowing I
A scene is made up of a collection of objects
specified in world coordinates
World Coordinates
4. 4
of
30
Windowing II
When we display a scene only those objects
within a particular window are displayed
Window
wymax
wymin
wxmin wxmax
World Coordinates
5. 5
of
30
Windowing III
Because drawing things to a display takes
time we clip everything outside the window
Window
wymax
wymin
wxmin wxmax
World Coordinates
6. 6
of
30
Clipping
Avoid Drawing Parts of Primitives Outside Window
– Window defines part of scene being viewed
– Must draw geometric primitives only inside
window
World
Coordinates
7. 7
of
30
Viewport Transformation
Transform 2D Geometric Primitives from
Screen Coordinate System (Projection
Coordinates) to Image Coordinate
System (Device Coordinates)
Screen Image
Viewport
8. 8
of
30
Window vs. Viewport
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
11. 11
of
30
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
12. 12
of
30
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
13. 13
of
30
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 inside
Don’t clip
the window
One end-point inside
the window, one Must clip
outside
Both end-points
Don’t know!
outside the window
14. 14
of
30
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
15. 15
of
30
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
However, calculating line intersections is
computationally expensive
Because a scene can contain so many lines,
the brute force approach to clipping is much
too slow
16. 16
of
30
Cohen-Sutherland Clipping Algorithm
An efficient line clipping
algorithm
The key advantage of the
algorithm is that it vastly
reduces the number of line
intersections that must be Dr. Ivan E. Sutherland
co-developed the Cohen-
calculated Sutherland clipping
algorithm. Sutherland is
a graphics giant and
includes amongs t his
Cohen is something of a mystery – can achievements the
anybody find out who he was? invention of the head
m o u n t e d d i s p l a y.
17. 17
of
30
Cohen-Sutherland: World Division
World space is divided into regions based
on the window boundaries
– Each region has a unique four bit region code
– Region codes indicate the position of the
regions with respect to the window
1001 1000 1010
3 2 1 0
0000
above below right left 0001 0010
Window
Region Code Legend
0101 0100 0110
18. 18
of
30
Cohen-Sutherland: Labelling
Every end-point is labelled with the
appropriate region code
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
19. 19
of
30
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
20. 20
of
Cohen-Sutherland: Lines Outside The
30 Window
Any lines with a common set bit 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
21. 21
of
30
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
22. 22
of
30
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
23. 23
of
30
Cohen-Sutherland Examples
Consider the line P9 to P10 below
– Start at P10 Window
wymax
– From the region codes
of the two end-points we
know the line doesn’t P [0000]
9
wymin
cross the left or right P ’ [0000]
10
boundary P [0100]
10
wxmin wxmax
– 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
24. 24
of
30
Cohen-Sutherland Examples (cont…)
Consider the line P3 to P4 below
– Start at P4 P ’ [1000]
P [1000]
4
4
Window
– From the region codes wymax
of the two end-points P [0001]
3
we know the line
crosses the left wymin
boundary so calculate
the intersection point to
generate P4’ wxmin wxmax
– The line P3 to P4’ is completely outside the
window so is clipped
25. 25
of
30
Cohen-Sutherland Examples (cont…)
Consider the line P7 to P8 below
– Start at P7
Window
– From the two region wymax
codes of the two
end-points we know P7 [0001]
P7’ [0000]
P8 [0010]
the line crosses the P8’ [0000]
wymin
left boundary so
calculate the
intersection point to wxmin wxmax
generate P7’
26. 26
of
30
Cohen-Sutherland Examples (cont…)
Consider the line P7’ to P8
– Start at P8
Window
– Calculate the wymax
intersection with the
right boundary to P7 [0001]
P7’ [0000]
P8 [0010]
generate P8’ P8’ [0000]
wymin
– P7’ to P8’ is inside
the window so is
retained wxmin wxmax
27. 27
of
30
Cohen-Sutherland Worked Example
Window
wymax
wymin
wxmin wxmax
28. 28
of
30
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
29. 29
of
30
Calculating Line Intersections (cont…)
– The x-coordinate of an intersection with a
horizontal window boundary can be
calculated using:
x = x1 + (yboundary - y1) / m
where yboundary can be set to either wymin or
wymax
– m is the slope of the line in question and can
be calculated as m = (y2 - y1) / (x2 - x1)
30. 30
of
30
Area Clipping
Similarly to lines, areas
must be clipped to a
window boundary
Consideration must be
taken as to which
portions of the area must
be clipped
31. 31
of
Sutherland-Hodgman Area Clipping
30 Algorithm
Sutherland
A technique for clipping areas turns up
developed by Sutherland & again. This
time with
Hodgman Gary Hodgman with
whom he worked at
Put simply the polygon is clipped the first ever
by comparing it against each graphics company
Evans & Sutherland
boundary in turn
Original Area Clip Left Clip Right Clip Top Clip Bottom
32. 32
of
Sutherland-Hodgman Area Clipping
30 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.
33. 33
of
Sutherland-Hodgman Area Clipping
30 Algorithm (cont…)
To clip an area against an individual boundary:
– 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.
34. 34
of
30
Sutherland-Hodgman Example
Each example S
shows the point
being processed (P) P
I
S
and the previous P
point (S) Save Point P Save Point I
Saved points define P S
area clipped to the I P
boundary in
question
S
No Points Saved Save Points I & P
35. 35
of
30
Other Area Clipping Concerns
Clipping concave areas can be a little more
tricky as often superfluous lines must be
removed
Window Window Window Window
Clipping curves requires more work
– For circles we must find the two intersection
points on the window boundary
36. 36
of
30
Weiler-Atherton Polygon Clipping
– Here, the vertex-processing procedures for
window boundaries are modified so that
concave polygons are displayed correctly.
– 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.
37. 37
of
30
Weiler-Atherton Polygon Clipping
– Which path we follow depends on the
polygon-processing direction (clockwise or
counterclockwise).
– Whether the pair of polygon vertices
currently being processed represents an
outside-to-inside pair or an inside-to-outside
pair.
38. 38
of
30
Weiler-Atherton Polygon Clipping
For clockwise processing of polygon
vertices, we use the following rules:
–For an outside-to-inside pair of vertices,
follow the polygon boundary.
–For an inside-to-outside pair of vertices,
follow the window boundary in a clockwise
direction.
40. 40
of
30
Summary
Objects within a scene must be clipped to
display the scene in a window
Because there can be so many objects
clipping must be extremely efficient
The Cohen-Sutherland algorithm can be
used for line clipping
The Sutherland-Hodgman algorithm can be
used for area clipping
43. 43
of
30
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
44. 44
of
30
Clipping
Point clipping is easy:
– For point (x,y) the point is not clipped if
wxmin ≤ x ≤Pwxmax AND wymin ≤ y ≤ wymax
4
Window P2
wymax
P6
P3
P1
P7 P5
P9
P8
wymin
P10
wxmin wxmax
Before Clipping