Overview
[Home] [Overview] [History] [Algorithms] [Books] [Web Sites] [Gift Shop]


On this page, we give an overview of what geometry algorithms are and what they are good for.  The questions we will try to answer are:

What are Geometry Algorithms ?
What Applications use Geometry Algorithms ?
What Problems do Geometry Algorithms Solve ?
What is a Good Geometry Algorithm ?
What are some Significant Geometry Algorithms ?


What are Geometry Algorithms ?

The easy explanation is that geometry algorithms are what a software developer programs to solve geometry problems.  And we all know what geometry problems are, right?  The simplest of such problems might be to find the intersection of two lines, the area of a given region, or the inscribed circle of a triangle.  Methods and formulas have been around for a long time to solve such simple problems.  But, when it comes to solving even these simple problems as accurate, robust, and efficient software programs, the easy formulas are sometimes inappropriate and difficult to implement.  This is the starting point for geometry algorithms as methods for representing elementary geometric objects and performing the basic constructions of classical geometry.  We refer to these as "classical geometry algorithms" implementing Euclidean, analytic, and differential geometry constructs and computations.

Recently, a new extension of geometry, now referred to as "computational geometry",  has arisen that goes beyond the scope of classical geometries.  This extension has been made possible by, and has emerged from, modern computer technology.  In short, this brand of geometry is interested in massive problems with many objects (such as large sets of points or lines).  Comparative examples of such extended problems are:

Classical Geometry Modern Computational Geometry
Find the intersection point of two lines. Find all intersection points of a large set of n finite line segments.
Find the circumcircle of a triangle. Find the smallest circumcircle of a large set of n points.
Find the inscribed circle of a triangle. Find the largest inscribed circle inside a large set of n points.
Find the area of a triangle. Find the area of an irregular simple polygon with a large number of n vertices.
Find the volume of a regular 3D polyhedron. Find the volume of an irregular simple polytope with a large number of n vertices.

The size of the computational problem is measured by the size "n" of the large set of objects involved.  A major concern of computational geometry is to determine algorithms that are: (1) efficient even when the problem's size gets larger and larger; (2) practical and efficient for reasonably sized problems; and (3) accurate and robust on finite state computing machines.

It is somewhat inappropriate to refer to the solving of such massive geometry problems as "computational", and this has created some confusion.  In fact, classical geometry algorithms can involve more direct computation using established formulas, whereas this new brand of computer geometry is more algorithmic in nature, depending as much on the organization of the steps it performs as the actual mathematics used.  We prefer the term "algorithmic geometry", and will use it to refer to both classical and computational geometry algorithms.

It has been noted that there is nothing new about viewing geometry as algorithmic.  In fact, much of Euclid's geometry consists of algorithms to perform geometric constructions using basic operations with a straightedge and compass.  Its just that the problems were smaller since the Greek computing machine was an actual engineer using these implements to achieve the construction, and his speed was at best several operations per minute.  Modern computers can do billions of operations per second, and so the door is now open to devise algorithmic procedures for solving large scale geometric problems.


What Applications use Geometry Algorithms ?

There is a good recent (1996) Task Force Report "Application Challenges to Computational Geometry" describing many modern applications of algorithmic geometry.  It notes that with the explosion in computer graphics technology, "geometric computing is creeping into virtually every corner of science and engineering".  One could add business and finance, education, entertainment to the list.  Specific  areas that the report considers in detail include:

Computer Graphics and Imaging

uses geometry algorithms to represent, render, and visualize complex real and virtual worlds, such as we often see in recent movies, video games, or training simulators.  Basic methods include geometric modeling, clipping, set operations, space partitions, point location, etc.  Advanced techniques include visibility determination (hidden surface removal, ray tracing), shadow casting, radiosity, collision detection, and spline and NURBS modeling methods.

Shape Reconstruction

reconstructs computer 3D models of objects from 2D cross-sections or multiple views (such as stereoscopic pairs) of the object.  Important specific application areas include medical imaging, microscopy, geology, and remote sensing.

Computer Vision and Recognition

includes model-based (pattern) recognition and the recovery of 3D structure from 2D images (especially using stereoscopic and motion information).  This area also includes image segmentation to extract information about objects in a scene.

Geographical Information Systems

includes both the modeling and approximation of complicated terrains, as well as analysis of them (land area classification, construction planning, radar blockage, etc).  For transportation systems, there are problems of route planning, traffic monitoring and flow optimization.  This may involve making real time decisions based on remote sensing data, where the problem size is massive and solution efficiency is critical.  Because of the inherent geometric constraints, geometry algorithms are often involved.

Mesh Generation

is used in finite element modeling in engineering structures and fluid (hydro or aero) dynamics (for example, wind tunnel simulations, weather forecasting, etc).  The are many geometry aspects associated with the algorithms for constructing good modeling meshes in 2D (surface), 3D (volume), and higher dimensions.  Special meshes are needed for studying shock waves and vortices in fluid flows.

Robotics

needs geometry algorithms to solve robot motion planning problems.  This involves both obstacle collision avoidance and minimal route planning (perhaps with other geometric constraints, like terrain slope).  Problems involve geometry algorithms for moving polytope objects past polytope obstacles.  The robots involved can be used for industrial purposes, or can be fully or semi autonomous vehicles.  For example, autonomous robots we send to other planets will need to have computer vision for reconstructing scene geometry models which are then used for exploratory motion planning.

Manufacturing and Product Design

involves solid modeling using CAD/CAM systems that must adhere to spatial geometric constraints.  Surface and volume design may include simple geometric primitives or more esoteric surfaces and shapes plus their layout in the product.  Within the design models, engineering specifications need to be checked, and analysis (such as for stress or part failure) needs to be made using the geometry of the design.

Molecular Biology

has a high demand for geometry algorithms to model and analyze large scale molecular models associated with proteins, DNA, etc.  The human genome project is producing more-and-more data every day, and using it to produce and investigate models of the basis of life and evolution is an enormous challenge.  Even at the rudimentary level of cellular mechanisms, breakthroughs in geometric modeling and understanding may be the key to finding cures for genetic diseases (like cancer, Alzheimer's, etc).  A specific promising problem is to model the spatial structure of proteins, and use this to design drugs that geometrically bind with their receptors.

These are some of the areas in which geometry algorithms play a critical role.  Since everything we see and touch has a geometric aspect enabling us to understand our world, and the computer graphics and geometry ball is on the roll and gaining momentum, more-and-more areas of endeavor will start to be influenced by geometry algorithms.  You will recognize them when you see them.  But, will you know the best algorithms for new areas of application?  Knowing the fundamentals, and the scope of our current knowledge will help.


What Problems do Geometry Algorithms Solve ?

Geometry algorithms solve several classes of problems.  First, they provide fundamental methods for representing geometric objects and robustly computing primitive attributes and performing primitive operations on them.  Some of the basic problems solved by this class of algorithms are:

Representation of Geometric Objects

- basic points, lines, segments, and planes
- triangles, tetrahedrons, polygons and polyhedrons
- collections of objects and relations between them
- parametric (especially polynomial) curves and surfaces
- spatial partitions, planar graphs, linked edge lists

Basic Measurements

- distance between any two geometric objects
- area,  volume, circumference, surface area, center of mass

Euclidean Constructions

- segmenting (bisection, line division)
- parallels and perpendiculars
- inscribed circles and circumcircles
- tangents (between any two objects)
- regular polytopes

Basic Set Theory

- intersection, union, and differences (of lines, polygons, polyhedrons, etc)
- test for the inclusion of one object (eg: a point) in another (eg: a polyhedron)
- convex hulls (of large point sets)
- tests for simplicity or convexity of polygons and polyhedra

Combinatorics

- Euler characteristic, genus, Betti numbers, etc
- arrangments induced by collections of lines or planes

These are foundation algorithms that are used by a second class of higher level algorithms targeted at more specific and complex problems, such as:

Advanced Set Theory

- all intersections of a large set of finite segments
- constructing binary space partitions (BSPs)
- point location in a spatial partition or arrangement
- range testing (to filter a large set of points)

Visibility

- internal or external visibility graph of a polygon or polyhedron
- minimal guard positioning (art gallery, security, etc)
- hidden line or surface determination
- ray tracing with intersection and reflection

Partitioning (polygons and polyhedra)

- into convex and monotone pieces
- trapezoidalization and triangulation of polygons
- tetrahedralization of polyhedra

Proximity Determination

- Voronoi regions
- Delaunay triangulation

Path Planning (Robotics)

- collision avoidance among 2D and 3D polytope obstacles
- optimal routes (minimum distance, fastest time, least risk)
- object orientation manipulation (get the piano upstairs)
- linked arm movement : reachability

Reconstruction

- of a 3D object from multiple 2D slices or views

Shape Similarity

- measures of similarly & invariants of shape
- template matching & shape comparison

Approximation and Interpolation

- polyline approximation (of other polylines or parametric curves)
- generalization of polyhedral and parametric surfaces
- mesh generation (finite element approximation)
- linear and polynomial interpolation of approximations

Graph Theory

- minimal distance node pairing
- minimum spanning trees
- circuits and cycles (Euler, Hamilton, traveling salesperson)
- optimal drawing of graphs in the plane


What is a Good Geometry Algorithm ?

What makes a geometry algorithm good?  One factor is that it correctly solves a significant problem.  If an algorithm is the very first one or the only one to solve a certain problem, then that alone would make it significant.  Otherwise, something else has to distinguish it.  The primary theoretical  criterion used to compare algorithms is their efficiency, especially their asymptotic efficiency (aka "computational complexity") as the size n of the problem involved becomes increasingly large.  That is, the algorithm has to be ultimately faster than the competition.  Beyond speed, additional secondary criteria for good algorithms include: the amount of storage space they use, their runtime efficiency for low values of n, their ease of implementation, and also the sheer elegance of the algorithm's solution.  In some cases, the secondary criteria can outweigh the primary one.  For example, in a 1990 tour-de-force, Chazelle described a linear time O(n) algorithm for triangulating a simple polygon in the plane.  However, to this day that algorithm has never been implemented because it is too complicated!  So, other triangulation algorithms that are both reasonably fast and easy to implement become significant.  On the other hand, finding a way to simplify Chazelle's algorithm and actually programming it would be of great significance.

The asymptotic speed of an algorithm for large problem size n is measured by specifying a function f(n) such that the execution time E(n) is bounded by a constant factor times f(n); namely, E(n) < Cf(n) for some fixed constant C>0.  When f(n) is the smallest function for which this is true, one says that the algorithm is of order f(n), or is an O(f(n)) algorithm.  Commonly used bounding functions include: log n = log2(n), n, nk, 2n, a(n) [inverse Ackermann], ls(n) [Davenport-Schinzel] as well as combinations of them.  An asymptotic ordering for some of these is:

a(n) < log n < log2 n < ... < n < n a(n) <  n log n < n2 < n3 < ... < 2n.

The following table illustrates how rapidly these functions increase.

log n n n log n n2 n3 n4 2n
0 1 0 1 1 1 2
1 2 2 4 8 16 4
2 4 8 16 64 256 16
3 8 24 64 512 4096 256
4 16 64 256 4096 65536 65536
5 32 160 1024 32768 1048576 4294967296
6 64 384 4096 262144 16777216 xxxxxxxxxxxx
7 128 896 16384 2097152 268435456
8 256 2048 65536 16777216 4294967296
9 512 4608 262144 134217728 xxxxxxxxxxxx
10 1024 10240 1048576 1073741824
15 32768 491520 1073741824 xxxxxxxxxxxx
20 1048576 20971520 xxxxxxxxxxxx
25 33554432 838860800


This shows that the computing needed for an algorithm with high complexity can grow very rapidly as n gets larger.  Even for relatively small n, say n=1000, the amount of computation needed by a high complexity algorithm may be prohibitive.  Because of this, there is also a great interest in algorithms that perform well for the small values of n usually encountered in practice even if the asymptotic behavior is bad.

On the other hand, if there is a sublinear O(log n) algorithm to solve a problem, it becomes practical even for extremely large n.  The prototypical O(log n) algorithm is a binary search, and many geometry algorithms can be reduced to doing binary searches on sorted lists of geometric objects.  The sorting is often done using an O(n log n) quicksort in a preprocessing stage.  In such algorithms, the speed is divided into the preprocessing time to initialize data structures, and then the actual runtime speed with possibly many queries being made using these data structures.

Finally, it must be noted that there are resilient problems, such as the "travelling salesperson problem" (TSP), where the only known algorithms are O(2n) and it is suspected that this is the best one can do [this is the infamous "P=NP?" problem].  Since this is too much computation except for very small n, there is also a great interest in algorithms that find approximate solutions for this class of problems.


What are some Significant Geometry Algorithms ?

The past three decades have seen phenomenal advances in our knowledge about geometry algorithms.  The activity has been so great and so original that one might even consider it to be a long overdue revival.  It is more than just shaking the bones of Greek skeletons in front of us.  The massive nature of the problems involved goes as far beyond the Greeks as they went beyond the Egyptians.  Some of the most significant achievements are given in a recent (1996) report Strategic Directions in Computational Geometry.  Other notable examples are:

Problem Solution
Find the area of an n-vertex polygon O(n)
Find the 2D or 3D convex hull of n points O(n log n)
Triangulate a simple connected n-vertex polygon O(n)
Triangulate an n-vertex polygon with holes O(n log n)
Partition an n-vertex  polygon into a minimal number of convex pieces O(n3)
Determine if a point lies inside an n-vertex polygon O(n)
Determine a point's location in a convex planar graph with n edges Prep O(n log n)
Query O(log n)
Construct the Voronoi diagram of a set of n points O(n log n)
Construct the Delaunay triangulation of a set of n points O(n log n)
Construct the nearest neighbor graph for a set of n points O(n log n)
Find the largest empty circle inside a set of n points O(n log n)
Find the smallest circle enclosing a set of n points O(n log n)
Construct the minimal spanning tree of a planar graph with n edges O(n log n)
Determine all k intersection points of a set of n finite line segments in the plane O(n log n + k)
Determine if an n-vertex polygon is simple O(n log n)
Determine the union or intersection of two polygons with n vertices in total and k edge intersect points O(n log n + k)
Determine the intersection of two convex polygons with n vertices in total O(n)
Find an extreme point of an n-vertex convex polygon O(log n)
Find an extreme point of an n-vertex convex 3D polyhedron Prep O(n)
Query O(log n)
Find the first point of contact (visibility) between a ray  and a simple planar polygon Prep O(n)
Query O(log n)
Construct the planar exterior visibility map for a set of polygon obstacles with n vertices in total O(n log n)
Find the shortest planar path for a k-vertex polygon (robot) moving (with translations only) past polygon obstacles with n vertices in total O(kn log kn)
Find the shortest planar path for a line segment (robot) moving (with translation and rotation) past polygon obstacles with n vertices in total O(n2)

 

Copyright © 2001-2006 softSurfer.  All rights reserved.
Email comments and suggestions to
feedback@softsurfer.com