Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | Related Pages

geos::algorithm Namespace Reference

Contains classes and interfaces implementing fundamental computational geometry algorithms. More...


Classes

class  geos::algorithm::Angle
 Utility functions for working with angles. More...
class  geos::algorithm::BoundaryNodeRule
class  geos::algorithm::CentralEndpointIntersector
 Computes an approximate intersection of two line segments by taking the most central of the endpoints of the segments. More...
class  geos::algorithm::CentroidArea
 Computes the centroid of an area geometry. More...
class  geos::algorithm::CGAlgorithms
 Specifies and implements various fundamental Computational Geometric algorithms. The algorithms supplied in this class are robust for double-precision floating point. More...
class  geos::algorithm::ConvexHull
class  geos::algorithm::HCoordinate
 Represents a homogeneous coordinate in a 2-D coordinate space. More...
class  geos::algorithm::InteriorPointArea
 Computes a point in the interior of an area geometry. More...
class  geos::algorithm::InteriorPointLine
 Computes a point in the interior of an linear geometry. More...
class  geos::algorithm::InteriorPointPoint
 Computes a point in the interior of an point geometry. More...
class  geos::algorithm::LineIntersector
 A LineIntersector is an algorithm that can both test whether two line segments intersect and compute the intersection point if they do. More...
class  geos::algorithm::MinimumDiameter
 Computes the minimum diameter of a geom::Geometry. More...
class  geos::algorithm::NotRepresentableException
 Indicates that a HCoordinate has been computed which is not representable on the Cartesian plane. More...
class  geos::algorithm::PointLocator
 Computes the topological relationship (Location) of a single point to a Geometry. More...
class  geos::algorithm::RayCrossingCounter
 Counts the number of segments crossed by a horizontal ray extending to the right from a given point, in an incremental fashion. More...
class  geos::algorithm::RobustDeterminant
 Implements an algorithm to compute the sign of a 2x2 determinant for double precision values robustly. More...

Functions

std::ostream & operator<< (std::ostream &o, const HCoordinate &c)


Detailed Description

Contains classes and interfaces implementing fundamental computational geometry algorithms.

Robustness

Geometrical algorithms involve a combination of combinatorial and numerical computation. As with all numerical computation using finite-precision numbers, the algorithms chosen are susceptible to problems of robustness. A robustness problem occurs when a numerical calculation produces an incorrect answer for some inputs due to round-off errors. Robustness problems are especially serious in geometric computation, since they can result in errors during topology building.

There are many approaches to dealing with the problem of robustness in geometrical computation. Not surprisingly, most robust algorithms are substantially more complex and less performant than the non-robust versions. Fortunately, JTS is sensitive to robustness problems in only a few key functions (such as line intersection and the point-in-polygon test). There are efficient robust algorithms available for these functions, and these algorithms are implemented in JTS.

Computational Performance

Runtime performance is an important consideration for a production-quality implementation of geometric algorithms. The most computationally intensive algorithm used in JTS is intersection detection. JTS methods need to determine both all intersection between the line segments in a single Geometry (self-intersection) and all intersections between the line segments of two different Geometries.

The obvious naive algorithm for intersection detection (comparing every segment with every other) has unacceptably slow performance. There is a large literature of faster algorithms for intersection detection. Unfortunately, many of them involve substantial code complexity. JTS tries to balance code simplicity with performance gains. It uses some simple techniques to produce substantial performance gains for common types of input data.

Package Specification


Generated on Tue Jun 5 14:58:27 2012 for GEOS by  doxygen 1.3.9.1