G E O M E T R Y

 

You Want To Solve Geometric Problems?

Are you working on problems related to objects like points, segments, polygons, planar arrangements? Would you like to solve optimization problems, answer neighborhood queries, or do point location? Are you looking for data structures for basic and complex geometric intersection problems? Do you need exact and reliable results?

LEDA Offers All The Classes And Algorithms You Need!

 

LEDA And Computational Geometry

LEDA provides many two-dimensional as well as three-dimensional basic data types such as points, segments, spheres, circles, planes, polygons, and many more. See in the manual basic data types 1 and basic data types 2.

They all come with an enormous collection of related methods, e.g. cite the binary operations on general polygons (polygons with holes). See in the manual gen_polygon and r_circle_gen_polygon.

Beyond that, it also gives you several advanced data structures that help you answer many typical questions arising in computational geometry, such as delaunay diagrams, voronoi diagrams, and planar subdivisions. See this in the manual advanced data types.

Moreover, there are many helpful functions and algorithms available, such as Minkowski sums, segment intersection algorithms, closest pair computations and many more. Read in the manual about LEDA's geometry algorithms.

The overwhelming strength of LEDA's geometric module is based on three further features:

  • First, LEDA's algorithms come along with every possible problem instance, degenerate input data is not a problem for its algorithms.
  • Second, the ' basic problem' of exact arithmetic which has to be solved in order to guarantee correct results, namely the must of using exact arithmetic, IS solved in LEDA. There are even several ready-to-use solutions to this problem available. For an example read the manual about circles, rational_circles and real_circles.
  • Third, LEDA's geometric data types are sometimes closely related to LEDA's graph and network data types. The segment intersection algorithms can, for instance, associate an underlying graph with the computed arrangement. This is also the case with polygons. Thus, LEDA can do a lot of things with geometric objects that other tools can't because LEDA can make use of structural information.

And last but not least, with LEDA you can display your geometric objects; you can use the standard windows type that provides the necessary functionality. For information on LEDA WIndows see chapter 3.4 in the manual.

There are also very specialized data types available that are tailored to support the visualization of geometric data. For more information see the pages about LEDA's GeoWin and about Windows for 3D Visualization.

LEDA And Exact Arithmetic

If you are familiar with geometric problem solutions you know about the main challenges in this area: Due to the finite precision arithmetic of the standard number types provided by your programming language, you usually get into problems quite frequently. Even well known CAD, CAE or GIS programs crash on several input data.

LEDA has its own geometric kernel! No matter whether the input data is degenerated or the operations require exact computing, with LEDA your tasks can be done! You can choose whether you run LEDA's geometric kernel with doubles, or rational numbers, or algebraic numbers, whatever is required by your concrete problem. There are integers as well as floating numbers with arbitrary precision available. A floating point filter guarantees for efficiency of the methods. For example PolyGIS, the fastest GIS in the German market, is empowered by LEDA's arithmetic.

See for yourself! Read the manual entries for Integers, Bigfloats, Reals, Interval Arithmetic, Floating Point Filter and many more.

LEDA And Curved Geometry

Polygons with Circular Arcs:

The LEDA types polygon and gen_polygon allow only straight line edges. Several of our customers have to compute with polygons where at least some edges are circular arcs. Often approximating such an edge by several straight line segments is not appropriate.

Since version 5.0 LEDA provides two new data types called r_circle_polygon and r_circle_gen_polygon that can handle polygons having straight line segments as well as circular arcs.

With version 5.1 some of our exact computation with circular arcs are now about 10 times faster than before. And approximated computation (= input and output data contain curved segments, only the computation uses straight line approximations) of boolean operations is now as fast as in the case of straight line segments.

>>> click the picture to see details

The type r_circle_gen_polygon allows to model polygons with holes, where straight line segments as well as circular segments are supported. All the usual polygon operations are provided.

In particular, we offer the following boolean operations:

  • intersection,
  • union,
  • difference and
  • symmetric difference.

It is important to emphasize that all these computations are exact, i.e. no rounding errors can occur.

Exact Computations With Circular Arcs Instead Of Straight Line Approximations!

Related Subjects:

SWEEP:plane sweep algorithm on circular segments (r_circle_segment).
Data Type Real: with LEDA 5.0 significant speed-up!

Documentation:

Read the manual page on r_circle_gen_polygon.
Read the manual page on r_circle_polygon.
Read the manual page on r_circle_segment and sweep.
Read the manual page on data type real.

LINKS

LEDA product pages
LEDA manual
LEDA tutorial
other LEDA information ressources

Copyright © 2008 Quappa Inc. All rights reserved. http://www.quappa.com