1 filling graphical shapes. 2 we know how to draw outlines can we just fill the “inside”? …but...

Post on 01-Jan-2016

214 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1

Filling Graphical Shapes

2

We know how to draw outlines

Can we just fill the “inside”? …but how do we know the difference

between the inside and outside? Can we determine if a point is inside a shape?

3

A Filling Anomaly

CS-321Dr. Mark L. Hornick

4

One Approach:The Odd-Even Rule

1. Choose an arbitrary point

2. Draw ray to a distant point Don’t intersect any vertices What’s a “distant” point?

3. Count edges crossed Odd count means interior Even count means exterior

1

1

1

3

2

0

2

CS-321Dr. Mark L. Hornick

5

Odd-Even Result

1

1

1

1

3

2

CS-321Dr. Mark L. Hornick

6

Another approach:Nonzero Winding Rule Choose a point Draw ray to a distant point

Don’t intersect any vertices Consider edges crossed

(right hand rule) Subtract 1 when ray to edge

is clockwise Add 1 when ray to edge is

counter-clockwise Nonzero count means

interior Count = “Winding number”

-1

-1

-1

-1

-2

0

0

CS-321Dr. Mark L. Hornick

7

Nonzero Winding Example

−1

−1

−1

−1

−1

−2

CS-321Dr. Mark L. Hornick

8

Computing Winding Number

Compute cross product Between ray and edge Sign of z value determines direction

+z implies CCW (add 1 to winding number)

See text, page 128

CS-321Dr. Mark L. Hornick

9

Cross Product Example

u=(1,1,0)

VB=(2,0,0)

VA=(1,0,0) E

“−1” means u crosses E clockwise

CS-321Dr. Mark L. Hornick

10

Cross Product Simplification

negative means clockwise

CS-321Dr. Mark L. Hornick

11

Computing Winding Number

Compute dot product Use perpendicular to ray vs. edge

If ray is given by (ux, uy), perpendicular is (- uy, ux)

Sign of product determines direction +product implies “right-to-left” (add 1 to winding

number)

See text, page 128

CS-321Dr. Mark L. Hornick

12

Dot Product Example

Again, “−1” means u crosses E from left to right

u=(1,1,0), w = (−1,1,0) [“right-to-left” perpendicular to u]

VB=(2,0,0)

VA=(1,0,0) E

CS-321Dr. Mark L. Hornick

13

Dot Product Simplification

Same result as from cross product!

CS-321Dr. Mark L. Hornick

14

Inside-Outside Tests Summary

Odd-even rule Generalized from scan-line fill May produce unusual results if edges

intersect Nonzero winding number rule

Alternate way of determining interior

top related