Polygon Clipping
[Hill: p. 202-204. Foley & van Dam: p. 124-127]
The Sutherland-Hodgman algorithm can be used to clip any polygon (convex
or concave) against any convex clipping polygon. The algorithm clips against
one edge at a time, producing a new vertex list each time. The following
figure assumes the most common case, a rectangular clipping window.
The algorithm can be summarized as follows:
for each side of clipping window
for each edge of polygon
output points based upon the following table
Example
Using Outcodes for Trivial Accept and Reject
[Hill: p. 96-98]
In many cases, two trivial tests can be used to quickly determine whether
a polygon is completely inside or outside the viewing window. This then
allows us to skip the above clipping procedure. The trivial tests
require first computing outcodes.
A vertex outcode consists of four bits: TBRL, where:
-
T is set if y > top,
-
B is set if y < bottom,
-
R is set if x > right, and
-
L is set if x < left.
Trivial accept: all vertices are inside
(all outcodes are 0000)
Trivial reject: all vertices are outside
with respect to any given side(bitwise AND is not 0000)