انت هنا الان : شبكة جامعة بابل > موقع الكلية > نظام التعليم الالكتروني > مشاهدة المحاضرة

Windowing & Clipping In 2D

الكلية كلية تكنولوجيا المعلومات     القسم قسم شبكات المعلومات     المرحلة 2
أستاذ المادة الاء شوقي جابر علي شعابث       29/12/2015 07:09:01
Windowing & Clipping In 2D


2
of
44

Contents

Windowing Concepts
Clipping
–Introduction
–Brute Force
–Cohen-Sutherland Clipping Algorithm
Area Clipping
–Sutherland-Hodgman Area Clipping
Algorithm

Windowing I

A scene is made up of a collection of objects
specified in world coordinates

World Coordinates


Windowing II

When we display a scene only those objects
within a particular window are displayed

wymax

wymin
wxmin

wxmax

Window
World Coordinates


Windowing III

Because drawing things to a display takes
time we clip everything outside the window

wymax
wymin

wxmin

wxmax
World Coordinates

Window


Clipping

For the image below consider which lines
and points should be kept and which ones
should be clipped
wymax

wymin

wxmin wxmax

Window

P1

P2

P3
P6

P5

P7
P10

P9

P4

P8


Point Clipping

Easy - a point (x,y) is not clipped if:

wxmin = x = wxmax AND wymin = y = wymax

otherwise it is clipped

wymax
wymin

wxmin

wxmax

Window

P1

P2

P5

P9

P4

P8

Clipped

Points Within the Window
are Not Clipped

Clipped

Clipped
Clipped


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
the window

Don’t clip

One end-point inside
the window, one
outside

Must clip

Both end-points
outside the window

Don’t know!


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




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

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
calculated


Cohen-Sutherland Clipping Algorithm

• One of the earliest algorithms with many
variations in use.
• Processing time reduced by performing
more test before proceeding to the
intersection calculation.
•Initially, every line endpoint is assigned a
four digit binary value called a region code,
and each bit is used to indicate whether the
point is inside or outside one of the clipping-
window boundaries.



Cohen-Sutherland Clipping Algorithm

• We can reference the window edges in any
order, and here is one possibility.
•For this ordering, (bit 1) references the left
boundary, and (bit 4) references the top one.
•A value of 1 (true) in any bit position
indicate that the endpoint is outsides of that
border.
•A value of 0 (false) indicates that the
endpoint is inside or on that border.


Top

Bottom

Right

Left

4 3

2

1

Cohen-Sutherland: World Division

•The four window borders create nine
regions
•The Figure below lists the value for the
binary code in each of these regions.


1001

1000

1010

0001

0000

Window

0010

0101

0100

0110



Thus, an endpoint that is
below and to the left of the
clipping window is assigned
the region (0101).

The region code for any
endpoint inside the clipping
window is (0000).


15
of
44

Cohen-Sutherland: Labelling
Every end-point is labelled with the
appropriate region code

wymax

wymin
wxmin

wxmax
Window

P3 [0001]

P6 [0000]
P5 [0000]

P7 [0001]

P10 [0100]
P9 [0000]

P4 [1000]
P8 [0010]

P12 [0010]

P11 [1010]
P13 [0101]

P14 [0110]


16
of
44

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
wymax

wymin

wxmin wxmax

Window

P3 [0001]

P6 [0000]

P5 [0000]
P7 [0001]

P10 [0100]

P9 [0000]
P4 [1000]

P8 [0010]

P12 [0010]

P11 [1010]

P13 [0101] P14 [0110]


17
of
44

Cohen-Sutherland: Lines Outside The
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.

wymax

wymin

wxmin

wxmax
Window

P3 [0001]

P6 [0000]
P5 [0000]

P7 [0001]

P10 [0100]

P9 [0000]

P4 [1000]
P8 [0010]

P12 [0010]

P11 [1010]
P13 [0101]

P14 [0110]


18
of
44

Cohen-Sutherland: Inside/Outside Lines

•We can perform inside/outside test for lines
using logical operators.
•When the or operation between two
endpoint codes is false (0000), the line is
inside the clipping window, and we save it.
•When the and operation between two
endpoint codes is true (not 0000), the line is
completely outside the clipping window, and
we can eliminate it.



19
of
44

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





20
of
44

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





21
of
44

Cohen-Sutherland Examples

Consider the line P9 to P10 below
–Start at P10
–From the region codes
of the two end-points we
know the line doesn’t
cross the left or right
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




wymax
wymin

wxmin wxmax
Window
P10 [0100]

P9 [0000]

P10’ [0000]
P9 [0000]
22
of
44

Cohen-Sutherland Examples (cont…)
Consider the line P3 to P4 below
–Start at P4
–From the region codes
of the two end-points
we know the line
crosses the left
boundary so calculate
the intersection point to
generate P4’
–The line P3 to P4’ is completely outside the
window so is clipped




wymax
wymin

wxmin

wxmax
Window
P4’ [1001]

P3 [0001]
P4 [1000]
P3 [0001]
23
of
44

Cohen-Sutherland Examples (cont…)

Consider the line P7 to P8 below
–Start at P7
–From the two region
codes of the two
end-points we know
the line crosses the
left boundary so
calculate the
intersection point to
generate P7’




wymax
wymin

wxmin wxmax
Window
P7’ [0000]

P7 [0001]

P8 [0010]
P8’ [0000]
24
of
44

Cohen-Sutherland Examples (cont…)

Consider the line P7’ to P8
–Start at P8
–Calculate the
intersection with the
right boundary to
generate P8’
–P7’ to P8’ is inside
the window so is
retained




wymax
wymin
wxmin

wxmax

Window
P7’ [0000]

P7 [0001]

P8 [0010]
P8’ [0000]
25
of
44

Cohen-Sutherland Worked Example

wymax

wymin
wxmin wxmax
Window


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…)

–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)





28
of
44

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


29
of
44

Area Clipping


30
of
44

Area Clipping


31
of
44

Sutherland-Hodgman Polygon Clipping


32
of
44

Sutherland-Hodgman Polygon Clipping
33
of
44

Sutherland-Hodgman Polygon Clipping


34
of
44

Sutherland-Hodgman Polygon Clipping
35
of
44

Sutherland-Hodgman Polygon Clipping

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.

Example


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


المادة المعروضة اعلاه هي مدخل الى المحاضرة المرفوعة بواسطة استاذ(ة) المادة . وقد تبدو لك غير متكاملة . حيث يضع استاذ المادة في بعض الاحيان فقط الجزء الاول من المحاضرة من اجل الاطلاع على ما ستقوم بتحميله لاحقا . في نظام التعليم الالكتروني نوفر هذه الخدمة لكي نبقيك على اطلاع حول محتوى الملف الذي ستقوم بتحميله .