Line and Polygon Clipping Foley & Van Dam, Chapter 3
Topics• Viewing Transformation Pipeline in 2D• Line and polygon clipping• Brute force analytic solution• Cohen-Sutherland Line Clipping Algorithm• Cyrus-Beck Line Clipping Algorithm• Sutherland-Hodgman Polygon Clipping• Sampling Theorem (Nyquist Frequency)
Viewing Transformation in 2D
x world
y worldx view
y view
World and Viewing Coordinates
Normalized Device Coordinates
1
1
x view
y view
Clipping
Device Coordinates
Viewing Transformation in 2D
A scene in World-Coordinates
World-Coordinates to Viewing Coordinates
Viewing Coordinates to Normalized Device Coordinates
Normalized Device Coordinates to Device Coordinates
WC
VC
NDCDC
Clipping
• Objects are given in world coordinates• The world is viewed through a window• The window is mapped onto a device viewport
Line and Polygon Clipping
The problem:Given a set of 2D lines or polygons and a window, clip the lines or polygons to their regions that are inside the window
Line Clipping
• We will deal only with lines (segments)
• Our window can be described by two extreme points:
(xmin,ymin) and (xmax,ymax)
• A point (x,y) is in the window iff:xmin ≤ x ≤ xmax and ymin ≤ y ≤ ymax
Brute Force Analytic Solution
• The intersection of convex regions is always convex
• Since both W and S are convex, their intersection is convex, i.e a single connected segment of S
Question: Can the boundary of two convex shapes intersect more than twice?
0, 1, or 2 intersections between a line and a window
W W W
S S S
Pseudo Code for Midpoint Line Drawing
Assume x1>x0 and 0 < slope ≤ 1
Line(x0,y0,x1,y1)begin
int dx, dy, x, y, d, ∆E, ∆ΝE ;x:= x0; y=y0;dx := x1-x0; dy := y1-y0;d := 2*dy-dx;∆E := 2*dy; ∆ΝΕ := 2*(dy-dx); PlotPixel(x,y);while(x < x1) do
if (d < 0) then d:=d+ ∆E;x:=x+1;
end;else
d:=d+ ∆ΝE;x:=x+1;y:=y+1;
end;PlotPixel(x,y);
end;end;
Line Clipping
Q E
NEM
y = ymin
x = xmin
(xmin,Round(mxmin+B))
(xmin, mxmin+B)
Midpoint Algorithm: Intersection with a vertical edge
Line Clipping
Midpoint Algorithm: Intersection with a horizontal edge
AB y = ymin
x = xmin
y = ymin-1/2
Cohen-Sutherland for Line Clipping• Clipping is performed by computing intersections with four
boundary segments of the window:
Li, i=1,2,3,4
• Purpose: Fast treatment of lines that are trivially inside/outside the window
• Let P=(x,y) be a point to be classified against window W
• Idea: Assign P a binary code consisting of a bit for each edge of W. The bit is 1 if the pixel is in the half-plane that does not contain W
Cohen-Sutherland for Line Clipping
bit 1 0123
y < yminy > ymaxx > xmax
y ≥ yminy ≤ ymaxx ≤ xmax
4 x < xmin x ≥ xmin
0101
0001
01100100
1001
0010
1010
0000
1000ymin
ymax
xmin xmax
1
234
Cohen-Sutherland for Line Clipping
Given a line segment S from p0=(x0,y0) to p1=(x1,y1) to be clipped against a window W
If code(p0) AND code(p1) is not zero, then S istrivially rejected
If code(p0) OR code(p1) is zero, then S is trivially accepted
0101
0001
01100100
1001
0010
1010
0000
1000
Cohen-Sutherland for Line ClippingOtherwise: let assume w.l.o.g. that p0 is outside W
• Find the intersection of S with the edge corresponding to the MSB in code(p0) that is equal to 1. Call the intersection point p2.
• Run the procedure for the new segment (p1 , p2).
A
BC
D
EF
GH
I
1
2
34
Cyrus-Beck Line Clipping
V0
V1
inside
N
U
Inside/Outside Test:• Assume WLOG that V=(V1-V0) is the border vector where
"inside" is to its right
• If V=(Vx,Vy), N is the normal to V, pointing outside, defined by N=(-Vy,Vx)
• Vector U points "outside" if N·U > 0
• Otherwise U points "inside"
Cyrus-Beck Line Clipping
P0
insideN
Q
P1V(t)
L
The parametric line P(t)=P0+(P1-P0)t
The parametric vector V(t)=P(t)-Q
The segment P0P1 intersects the line L at t0 satisfying V(t0)·N=0
The intersection point is P(t0)
∆=P1-P0 points inside if (P1-P0)·N<0. Otherwise it points outside
If L is vertical, intersection can be computed using the explicit equation
Cyrus-Beck Line Clipping
p0p1
Ni Qi
• Denote p(t)=p0+(p1-p0)t t∈[0..1]
• Let Qi be a point on the edge Li with outside pointing normal Ni
• V(t) = p(t)-Qi is a parameterized vector from Qi to the segment P(t)
• Ni· V(t) = 0 iff V(t) ⊥ Ni
• We are looking for t satisfying Ni· V(t) = 0
Cyrus-Beck Line Clipping0 = Ni· V(t)
= Ni· (p(t)-Qi)= Ni· (p0+(p1-p0)t-Qi)= Ni· (p0-Qi) + Ni· (p1-p0)t
Solving for t we get:
where ∆=(p1-p0)
Comment: If Ni·∆=0, t has no solution (V(t) ⊥ Ni)
Ni·(p0-Qi) -Ni·(p1-p0)
t = Ni·(p0-Qi) -Ni·∆
=
Cyrus-Beck Line Clipping
• The intersection of p(t) with all four edges Li is computed, resulting in up to four ti values
• If ti<0 or ti>1 , ti can be discarded• Based on the sign of Ni·∆, each intersection
point is classified as PE (potentially entering) or PL (potentially leaving)
• PE with the largest t and PL with the smallest tprovide the domain of p(t) inside W
• The domain, if inverted, signals that p(t) is totally outside
Sutherland-HodgmanPolygon-Clipping Algorithm
right clip boundary bottom clip boundary
left clip boundary top clip boundary
Idea: Clip a polygon by successively clipping against each (infinite) clip edge
After each clipping a new set of vertices is produced.
Sutherland-HodgmanPolygon-Clipping Algorithm
clip boundary
inside outsides
clip boundary
inside outside
s
p
clip boundary
inside outsidep si
sclip boundary
inside outside
pi
p added tooutput list
i added tooutput list no output i and p added to
output list
p
For each clip edge - scan the polygon and consider the relation between successive vertices of the polygon
Each iteration adds 0, 1 or 2 new vertices
Assume vertex s has been dealt with, vertex p follows:
Sutherland-HodgmanPolygon-Clipping Algorithm
WindowV3
V'2
V”2
V1
V’3
V2
V’1
LeftClipping
RightClipping
BottomClipping
TopClipping
V1V2V3
V1V2V’2V’3
V1V2V’2V’3
V’1V2V’2V”2
Sampling TheoremQuestion: How dense should be the pixel grid in order to draw properly a drawn object?
Given a sampling at intervals equal to d then one may recover frequencies of wavelength > 2d
Aliasing: If the sampling interval is more than 1/2 the wavelength, erroneous frequencies may be produced
Sampling Theorem
1D Example:
0 π 2π 3π 4π 5π 6π
Rule of Thumb: To observe details of size d one must sample at d/2 intervals
To observe details at frequency f (=1/d) one must sample at frequency 2f. The Frequency 2f is the NYQUIST frequency