31.01.2014 Views

Version 5.0 The LEDA User Manual

Version 5.0 The LEDA User Manual

Version 5.0 The LEDA User Manual

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

15.2 Point Sets and Delaunay Triangulations (<br />

POINT SET )<br />

1. Definition<br />

<strong>The</strong>re are three instantiations of POINT SET : point set (floating point kernel),<br />

rat point set (rational kernel) and real point set (real kernel). <strong>The</strong> respective header file<br />

name corresponds to the type name (with “.h” appended).<br />

An instance T of data type POINT SET is a planar embedded bidirected graph (map)<br />

representing the Delaunay Triangulation of its vertex set. <strong>The</strong> position of a vertex v is<br />

given by T.pos(v) and we use S = {T.pos(v) | v ∈ T } to denote the underlying point set.<br />

Each face of T (except for the outer face) is a triangle whose circumscribing circle does<br />

not contain any point of S in its interior. For every edge e, the sequence<br />

e, T.face cycle succ(e), T.face cycle succ(T.face cycle succ(e)), . . .<br />

traces the boundary of the face to the left of e. <strong>The</strong> edges of the outer face of T form the<br />

convex hull of S; the trace of the convex hull is clockwise. <strong>The</strong> subgraph obtained from<br />

T by removing all diagonals of co-circular quadrilaterals is called the Delaunay Diagram<br />

of S.<br />

POINT SET provides all constant graph operations, e.g., T.reversal(e) returns the reversal<br />

of edge e, T.all edges( ) returns the list of all edges of T , and forall edges(e, T )<br />

iterates over all edges of T . In addition, POINT SET provides operations for inserting<br />

and deleting points, point location, nearest neighbor searches, and navigation in both the<br />

triangulation and the diagram.<br />

POINT SET s are essentially objects of type GRAPH , where the node information<br />

is the position of the node and the edge information is irrelevant. For a graph G<br />

of type GRAPH the function Is Delaunay(G) tests whether G is a Delaunay<br />

triangulation of its vertices.<br />

<strong>The</strong> data type POINT SET is illustrated by the point set demo in the <strong>LEDA</strong> demo directory.<br />

Be aware that the nearest neighbor queries for a point (not for a node) and the range<br />

search queries for circles, triangles, and rectangles are non-const operations and modify<br />

the underlying graph. <strong>The</strong> set of nodes and edges is not changed; however, it is not<br />

guaranteed that the underlying Delaunay triangulation is unchanged.<br />

#include < <strong>LEDA</strong>/geo/generic/POINT SET.h ><br />

2. Creation<br />

POINT SET T ; creates an empty POINT SET T .

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!