Loading...

PPT – UMass Lowell Computer Science 91.504 Advanced Algorithms Computational Geometry Prof. Karen Daniels Spring, 2001 PowerPoint presentation | free to download - id: 41f4f8-YzJkY

The Adobe Flash plugin is needed to view this content

UMass Lowell Computer Science 91.504 Advanced

Algorithms Computational Geometry Prof. Karen

Daniels Spring, 2001

- Lecture 1
- Course Introduction
- Start of Part I Material
- Makeup for 2/5/01

Course Introduction

- What is
- Computational Geometry?

Advanced Algorithms Computational Geometry

91.504

Computer Graphics

Visualization

Design

Analyze

Core Geometric Algorithms

Application-Based Algorithms

Apply

Telecommunications

Typical Problems

- maintaining line arrangements
- polygon partitioning
- nearest neighbor search
- kd-trees

- bin packing
- Voronoi diagram
- simplifying polygons
- shape similarity
- convex hull

SOURCE Steve Skienas Algorithm Design Manual

(for problem descriptions, see graphics gallery

at http//www.cs.sunysb.edu/algorith)

Common Computational Geometry Structures

How are They Related?

- Project each point upwards onto paraboloid z x2

y2 - Construct 3D Convex Hull
- Discard top faces
- Project Convex Hull down to form Delaunay

Triangulation - Form dual of the Delaunay Triangulation to obtain

Voronoi Diagram

Sample Tools of the Trade

Algorithm Design Patterns/Techniques binary

search divide-and-conquer duality randomization sw

eep-line derandomization parallelism Algorithm

Analysis Techniques asymptotic analysis Data

Structures winged-edge, quad-edge, range tree,

kd-tree Theoretical Computer Science

principles NP-completeness, hardness

MATH

Sets

Proofs

Geometry

Summations

Linear Algebra

Probability

Growth of Functions

Recurrences

Graph Theory

Combinatorics

Computational Geometry in Context

Course Introduction

- My Computational Geometry Research

Survey of My Previous Computational Geometry

Research Supporting Manufacturing Applications

Computational Geometry My Current Research

Course Introduction

- Course Description

Web Page

http//www.cs.uml.edu/kdaniels/courses/cg2001spr

ing.html

Nature of the Course

- Elective graduate Computer Science course
- Theory and Practice
- Theory Pencil-and-paper exercises
- design an algorithm
- analyze its complexity
- modify an existing algorithm
- Practice
- Programs
- Real-world examples

Course Structure 2 Parts

Advanced Topics Applications Manufacturing Mo

deling/Graphics Wireless Networks Visualizatio

n Techniques (de)Randomization Approximation

Robustness Representations Epsilon-net Deco

mposition tree

- Basics
- Polygon Triangulation
- Partitioning
- (2D and 3D) Convex Hulls
- Voronoi Diagrams
- Arrangements
- Search/Intersection
- Motion Planning

Textbook

- Required
- Computational Geometry in C
- second edition
- by Joseph ORourke
- Cambridge University Press
- 1998
- see course web site for ISBN number(s) errata

list

ordered for UML bookstore

Web Site http//cs.smith.edu/orourke/books/compg

eom.html

Textbook Java Demo Applet

- Code function Chapter pointer directory
- --------------------------------------------------

--- - Triangulate Chapter 1, Code 1.14 /tri
- Convex Hull(2D) Chapter 3, Code 3.8 /graham
- Convex Hull(3D) Chapter 4, Code 4.8 /chull
- sphere.c Chapter 4, Fig. 4.15 /sphere
- Delaunay Triang Chapter 5, Code 5.2 /dt
- SegSegInt Chapter 7, Code 7.2 /segseg
- Point-in-poly Chapter 7, Code 7.13 /inpoly
- Point-in-hedron Chapter 7, Code 7.15 /inhedron
- Int Conv Poly Chapter 7, Code 7.17 /convconv
- Mink Convolve Chapter 8, Code 8.5 /mink
- Arm Move Chapter 8, Code 8.7 /arm

http//cs.smith.edu/orourke/books/CompGeom/CompGe

om.html

Prerequisites

- Graduate Algorithms (91.503)
- Coding experience in C, C or Java
- Standard CS graduate-level math prerequisites

high school Euclidean geometry - additional helpful math background
- linear algebra, topology

Syllabus (current plan)

Part 1

Part 2

Literature for Part II (current plan)

Literature for Part II (current plan) (continued)

Important Dates

- Midterm Exam Monday, 3/12
- Final Exam TBA

If you have conflicts with exam dates, please

notify me as soon as possible.

Grading

- Homework 30
- Project 25
- Midterm (ORourke) 20 (open book, notes )
- Final Exam 25 (open book, notes )

Part I

- ORourke Chapter 1
- Polygon Triangulation
- Art Gallery Theorems
- Triangulation Theory
- Area of Polygon
- Implementation Issues
- Segment Intersection
- Triangulation Implementation

Art Gallery Theorems

- Polygons
- The Art Gallery Theorem
- Fiskes Proof of Sufficiency

Art Gallery Theorems Polygons

- What is a polygon?
- region of a plane bounded by a finite collection

of line segments forming a simple closed curve

n5

P

nonconvex

convex

simple

nonsimple

Art Gallery Theorems The Theorem

- How many stationary guards are needed to guard

the room? - Visibility 2p range
- Empirically
- n is sufficient (2D)
- n necessary for small n? 3? 4? 5?
- Guess in general n/3 necessary

Find G(n) the maximum (over all n-vertex

polygons) of the minimum number of guards needed

to cover the polygon.

Art Gallery Theorems Fiskes Proof

- Given arbitrary n-vertex P
- Triangulate P using diagonals
- Form triangulation graph G
- G can be 3-colored (proof later...)
- Place a guard at each same-colored vertex of G
- This covers all of P
- By pigeon-hole principle n/3 guards

Diagonal line segment between 2 vertices that

are clearly visible to each other (no

grazing contact)

Triangulation Theory

- Existence of a Diagonal
- Properties of Triangulations
- Triangulation Dual
- 3-Coloring Proof

Triangulation Theory Existence of a Diagonal

- Step 1 Every polygon must have gt 1 strictly

convex vertex (no collinearity) - Step 2 Every polygon of n gt 4 vertices has a

diagonal - Conclusion Every n-vertex polygon P may be

partitioned into triangles by adding (gt0)

diagonals proof by induction using diagonals

Triangulation Theory Properties

- Every triangulation of an n-vertex polygon P uses

n-3 diagonals and consists of n-2 triangles. - The sum of the internal angles of an n-vertex

polygon is (n-2)p.

9 vertices 7 triangles 6 diagonals

Triangulation Theory Duality

- The dual of a triangulation is a tree with each

node of degree at most 3. - 2-Ears Theorem every polygon of n gt 4

vertices has at least 2 nonoverlapping ears.

ear

ear

Triangulation Theory 3-Coloring

- 2-Ears Theorem can be used to easily prove

3-colorability of triangulation graphs - Induction on n
- Base case n 3
- For n gt 4
- 2-ears theorem guarantees that an ear abc exists
- apply inductive hypothesis to polygon P without

ear - reattaching ear adds back in one vertex

(w.l.o.g. b) - color b whatever color a and c dont use
- result is a 3-coloring of P

a

b

c

Area of Polygon

- Cross Product
- Determinant Form
- Area of a Convex Polygon
- Area of a Convex Quadrilateral
- Area of a Nonconvex Quadrilateral
- Area from an Arbitrary Center
- Volume in gt 3 Dimensions

Area of Polygon Cross Product or Determinant

0 for 2D

Area of Polygon Convex Quadrilateral

- Could find area of polygon via triangulation...but

we want to avoid this! - To see how, first consider triangulation for 2

easy polygon cases Convex - Convex Quadrilateral

Area of Polygon (continued)

- Nonconvex Quadrilateral
- Arbitrary Center

negative area

more efficient

Area of Polygon Volume

- Determinant area formulation extends to higher

dimensions. - In 3D

y

Implementation Issues

- Representation of a Point
- Representation of a Polygon
- Code for Area

Text describes C code. C or Java code available

from texts Web site

Implementation Issues Point C code

uppercase constants

X is 0th element of point Y is 1st

define X 0 define Y 1 typedef enum FALSE,

TRUE bool define DIM 2 /

Dimension of points / typedef int tPointiDIM

/ Type integer point /

i for integer

integers to minimize roundoff errors (but

overflow is possible)

lowercase type identifier

Implementation Issues Polygon

typedef struct tVertexStructure tsVertex

/ Used only in NEW(). / typedef tsVertex

tVertex struct tVertexStructure

int vnum / Index / tPointi v /

Coordinates / bool ear / TRUE iff an ear

/ tVertex next,prev / Global variable

definitions / tVertex vertices NULL /

"Head" of circular list. / int nvertices

0 / Total number of polygon vertices. /

doubly linked circular list for easy vertex

deletion/insertion

Implementation Issues Area Code

/------------------------------------------------

--------------------- Returns twice the signed

area of the triangle determined by a,b,c. The

area is positive if a,b,c are oriented ccw,

negative if cw,and zero if the points are

collinear. ---------------------------------------

------------------------------/ int Area2(

tPointi a, tPointi b, tPointi c )

return (bX - aX) (cY - aY) -

(cX - aX) (bY - aY)

minimizes number of multiplications to help avoid

overflow

Segment Intersection

- Diagonals key triangulation step
- Left
- Boolean Intersection
- Segment Intersection Code

Infinite slopes are problematic, so avoid slopes!

Segment Intersection Diagonals

Diagonal line segment between 2 vertices

that are clearly visible to each other

(no grazing contact)

which one is a legal diagonal?

Segment Intersection Left

/------------------------------------------------

--------------------- Returns true iff c is

strictly to the left of the directed line through

a to b. ------------------------------------------

---------------------------/ bool Left( tPointi

a, tPointi b, tPointi c ) return

AreaSign( a, b, c ) gt 0

returns sign (,0,-) of area instead of area

value itself

Segment Intersection Boolean Intersection

/------------------------------------------------

--------------------- Returns true iff ab

properly intersects cd they share a point

interior to both segments. The properness of

the intersection is ensured by using strict

leftness. ----------------------------------------

-----------------------------/ bool IntersectProp

( tPointi a, tPointi b, tPointi c, tPointi d )

/ Eliminate improper cases. / if (

Collinear(a,b,c) Collinear(a,b,d)

Collinear(c,d,a) Collinear(c,d,b)) return

FALSE return Xor( Left(a,b,c), Left(a,b,d)

) Xor( Left(c,d,a), Left(c,d,b) )

which are proper intersections?

Segment Intersection Intersection Code

/------------------------------------------------

--------------------- Returns TRUE iff segments

ab and cd intersect, properly or

improperly. --------------------------------------

-------------------------------/ bool Intersect(

tPointi a, tPointi b, tPointi c, tPointi d )

if ( IntersectProp( a, b, c, d ) )

return TRUE else if (Between( a, b, c )

Between( a, b, d ) Between( c,

d, a ) Between( c, d, b )) return

TRUE else return FALSE

Triangulation Implementation

Algorithm TRIANGULATION Initialize the ear tip

status of each vertex. while n gt 3 do Locate

an ear tip v2. Output diagonal v1 v3. Delete

v2. Update the ear tip status of v1 and v3.

- Diagonals (Internal or External)
- InCone (distinguish Internal from External)
- Triangulation by Ear Removal
- Analysis

Triangulation Implementation Diagonals (Internal

or External)

/------------------------------------------------

--------------------- Returns TRUE iff (a,b) is a

proper internal or external diagonal of P,

ignoring edges incident to a and

b. ----------------------------------------------

-----------------------/ bool Diagonalie(

tVertex a, tVertex b ) tVertex c, c1

/ For each edge (c,c1) of P / c

vertices do c1 c-gtnext /

Skip edges incident to a or b / if ( (

c ! a ) ( c1 ! a ) ( c ! b ) ( c1

! b ) Intersect( a-gtv,

b-gtv, c-gtv, c1-gtv ) ) return

FALSE c c-gtnext while ( c !

vertices ) return TRUE

Triangulation Implementation InCone

/------------------------------------------------

--------------------- Returns TRUE iff the

diagonal (a,b) is strictly internal to the

polygon in the neighborhood of the a endpoint.

-------------------------------------------------

--------------------/ bool InCone( tVertex a,

tVertex b ) tVertex a0,a1 / a0,a,a1 are

consecutive vertices. / a1 a-gtnext

a0 a-gtprev / If a is a convex vertex

... / if( LeftOn( a-gtv, a1-gtv, a0-gtv ) )

return Left( a-gtv, b-gtv, a0-gtv )

Left( b-gtv, a-gtv, a1-gtv ) / Else a is

reflex / return !( LeftOn( a-gtv,

b-gtv, a1-gtv ) LeftOn( b-gtv, a-gtv, a0-gtv ) )

Triangulation Implementation

/ Prints out n-3 diagonals (as pairs of integer

indices) which form a triangulation of P/ void

Triangulate( void ) tVertex v0, v1, v2,

v3, v4 / five consecutive vertices /

int n nvertices / number of vertices

shrinks to 3. / EarInit() while ( n

gt 3 ) / Inner loop searches for an ear and

removes it. / v2 vertices do

if (v2-gtear) / Ear found. /

v3 v2-gtnext v4 v3-gtnext v1

v2-gtprev v0 v1-gtprev

PrintDiagonal( v1, v3 ) v1-gtear

Diagonal( v0, v3 ) v3-gtear Diagonal( v1, v4

) v1-gtnext v3 v3-gtprev v1 /

Update earity. / vertices v3 / In case

the head was v2. / n--

break / out of inner loop resume outer

loop / / end

if ear found / v2

v2-gtnext while ( v2

! vertices ) / end outer while loop

/ / end Triangulate /

Triangulation Implementation Analysis

Naïve Analysis

Tighter Analysis

Algorithm TRIANGULATION Initialize the ear tip

status of each vertex. while n gt 3 do Locate

an ear tip v2. Output diagonal v1 v3. Delete

v2. Update the ear tip status of v1 and v3.

O(n2)

O(n2)

O(n) iterations

O(n) iterations

O(n)

O(n) iterations

O(n)

Total O(n3)

Total O(n2)

Homework

HW Assigned Due Content

- Fri, 2/9 Wed, 2/14 Chapter 1 (ORourke)
- problems 1 2
- Extra credit may be turned in any time during

week of 2/12

Machine Accounts

- Each student has an account on my machine

minkowski.cs.uml.edu - Username is the same as your username on CS
- Password is your initials followed by the last 5

digits on the bottom right hand corner of the

back of your student id card (1 exception) - To remotely log in, use a secure shell (e.g. ssh)
- To transfer files, use a secure FTP (e.g. sftpc)
- Saturn has an sftpc client
- Code to use with assignments will be there.