|
|
|
|
| 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.
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.
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 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.
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. |