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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ool<br />

MIN WIDTH ANNULUS(const list& L, point& center, point& ipoint,<br />

point& opoint, line& l1 , line& l2 )<br />

computes the minimum width annulus containing the points of L. <strong>The</strong><br />

function returns false if the minimum width annulus is a stripe and returns<br />

true otherwise. In the former case the boundaries of the stripes are<br />

returned in l1 and l2 and in the latter case the annulus is returned by its<br />

center and a point on the inner and the outer circle, respectively.<br />

void CRUST(const list& L0 , GRAPH & G)<br />

takes a list L0 of points and traces to guess the curve(s) from which L0<br />

are sampled. <strong>The</strong> algorithm is due to Amenta, Bern, and Eppstein. <strong>The</strong><br />

algorithm is guaranteed to succeed if L0 is a sufficiently dense sample<br />

from a smooth closed curve.<br />

bool<br />

Is Voronoi Diagram(const GRAPH & G, delaunay voronoi kind kind)<br />

checks whether G represents a nearest (kind = NEAREST ) or furthest<br />

(kind = FURTHEST ) site Voronoi diagram.<br />

Voronoi diagrams of point sites are represented as planar maps as follows:<br />

<strong>The</strong>re is a vertex for each vertex of the Voronoi diagram and, in addition,<br />

a vertex “at infinity” for each ray of the Voronoi diagram. Vertices at<br />

infinity have degree one. <strong>The</strong> edges of the graph correspond to the edges<br />

of the Voronoi diagram. <strong>The</strong> chapter on Voronoi diagrams of the <strong>LEDA</strong>book<br />

[64] contains more details. Each edge is labeled with the site (class<br />

POINT ) owning the region to its left and each vertex is labeled with<br />

a triple of points (= the three defining points of a CIRCLE). For a<br />

“finite” vertex the three points are any three sites associated with regions<br />

incident to the vertex (and hence the center of the circle is the position<br />

of the vertex in the plane) and for a vertex at infinity the three points<br />

are collinear and the first point and the third point of the triple are the<br />

sites whose regions are incident to the vertex at infinity. Let a and c be<br />

the first and third point of the triple respectively; a and c encode the<br />

geometric position of the vertex at infinity as follows: the vertex lies on<br />

the perpendicular bisector of a and c and to the left of the segment ac.<br />

• Line Segment Intersection<br />

void SEGMENT INTERSECTION(const list& S,<br />

GRAPH & G, bool embed = false)<br />

takes a list of segments S as input and computes the planar graph G<br />

induced by the set of straight line segments in S. <strong>The</strong> nodes of G are<br />

all endpoints and all proper intersection points of segments in S. <strong>The</strong><br />

edges of G are the maximal relatively open subsegments of segments in S<br />

that contain no node of G. <strong>The</strong> edges are directed as the corresponding<br />

segments. If the flag embed is true, the corresponding planar map is<br />

computed. Note that for each edge e G[e] is the input segment that<br />

contains e (see the <strong>LEDA</strong> book for details).

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

Saved successfully!

Ooh no, something went wrong!