In
computer science,
computational geometry is the study of algorithms to solve problems of
geometry. Some purely geometrical problems arise out of the study of computational geometric algorithms, and the study of such problems is also considered to be part of computational geometry.
Some core algorithms:
Some computational geometry problems:
- The museum problem. If a museum (represented by a polygon in the plane) wants to post guards (which see in all directions) to avoid getting robbed by a crook that could in principle drop from the ceiling, it is sufficient to post a guard at each vertex. This follows from the fact that all polygons can be triangulated. However, knowing that all triangulations can be colored using only three colors (see graph coloring[?]), we get a proof and algorithm that we never need to put more than one guard for each three vertices.
- The museum problem in three dimensions. If a museum is represented in three dimensions as a polyhedron, then putting a guard at each vertex will not ensure that all of the museum is under observation. Although all of the surface of the polyhedron would be surveilled, but there are points in the interior of the polyhedron which might not be under surveillance. (A picture of this would be good.)
- Given a list of pairs of integers (for instance, <math>\{(1,2),(1,3),(1,4),(2,5),(3,5)\}</math> representing the edges of a graph, we can ask whether it is possible to embed this graph in the plane (that is, draw it on a flat surface) without any edges crossing. This mildly overlaps with graph theory and graph drawing, but there is a complicated algorithm to answer this question efficiently.
- Given a list of points, line segments, triangles, spheres or other convex objects, determine whether there is a separating plane, and if so, compute it.
- Given two sets of points A and B, find the orthogonal matrix U which will minimize the distance between UA and B. In english, we're interested in seeing if A and B are simple rotations of one another.
All Wikipedia text
is available under the
terms of the GNU Free Documentation License