/********************************************************************** * * GEOS - Geometry Engine Open Source * http://geos.osgeo.org * * Copyright (C) 2005-2006 Refractions Research Inc. * Copyright (C) 2001-2002 Vivid Solutions Inc. * * This is free software; you can redistribute and/or modify it under * the terms of the GNU Lesser General Public Licence as published * by the Free Software Foundation. * See the COPYING file for more information. * ********************************************************************** * * This includes all headers from geos/algorithm. * It is reccommended you avoid to include this file, but rather * you include the specific headers you need. This is to reduce * dependency and thus build times. * We kept this file to provide some degree of backward compatibility. * This is also where Doxygen documentation for the geos::algorithm * namespace resides. * **********************************************************************/ #ifndef GEOS_ALGORITHM_H #define GEOS_ALGORITHM_H //#include //#include //#include //#include //#include //#include //#include //#include //#include #include //#include //#include //#include //#include #include //#include //#include //#include //#include namespace geos { /** \brief * 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

* * * */ namespace algorithm { // geos::algorithm /** \brief * Classes which determine the Location of points in geometries. */ namespace locate { } // namespace geos::algorithm::locate } // namespace geos::algorithm } // namespace geos #endif