Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r86434 - trunk/libs/geometry/doc
From: mateusz_at_[hidden]
Date: 2013-10-25 20:18:47


Author: mloskot
Date: 2013-10-25 20:18:47 EDT (Fri, 25 Oct 2013)
New Revision: 86434
URL: http://svn.boost.org/trac/boost/changeset/86434

Log:
[geometry] Add basic draft of the Robustness topic for docs

Added:
   trunk/libs/geometry/doc/robustness.qbk (contents, props changed)

Added: trunk/libs/geometry/doc/robustness.qbk
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ trunk/libs/geometry/doc/robustness.qbk 2013-10-25 20:18:47 EDT (Fri, 25 Oct 2013) (r86434)
@@ -0,0 +1,43 @@
+[/============================================================================
+ Boost.Geometry (aka GGL, Generic Geometry Library)
+
+ Copyright (c) 2013 Mateusz Loskot, London, UK.
+
+ Use, modification and distribution is subject to the Boost Software License,
+ Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+=============================================================================/]
+
+[/ TODO: this is a basic draft only, should NOT be built into final docs yet ]
+[/ TODO: discuss numerical stability per algorithm (at least for line intersection and point in polygon) ]
+
+[section Robustness]
+
+A numerical stability issues are a common problem in implementations of
+computational geometry algorithms.
+
+They lead to variety of unexpected sitautions at run-time: an application
+randomly throws segmentation faults, output computed by an algorithm
+contains degeneracies, unexpected artefacts or completely invalid.
+
+For example, according to the OpenGIS Simple Feature Specification,
+
+["A Polygon may not have cut lines, spikes or punctures]
+
+From mathematical point of view such condition is easy to verify.
+However, depending on computational method and in the presence of round-off
+or truncation errors, it is not easy to decided how "sharp" must be a part
+of polygon in order to consider it a spike.
+
+A 100% robust implementation of an algorithm gives expected result in 100% of cases. Achieving complete floating point robustness implies use of certain set of algorithms as well as platform specific assumptions about floating point representations.
+
+Despite Boost.Geometry does not promise absolute numerical stability,
+it attempts to offer balanced efficiency and robustness by:
+
+# selection of algorithms, often solved at case-by-case basis
+# compile-time selection of most precise and capacious C++ type on which to perform computations.
+# support for arbitrary precision numeric types
+
+
+[endsect]
+


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk