Description |
Computational geometry algorithms deal with geometric objects, usually represented by coordinates in an n-dimensional Euclidean space. Most efficient algorithms implement geometric operations as floating point arithmetic operations on the coordinates. Since floating point numbers can only approximate the "real" world, these operations often lead to topologically inconsistent results, especially when degenerate cases are handled. Recently, a variety of methods have been developed to cope with this, so called, robustness problem. This paper describes a new approach based on the optimistic assumption that in the majority of cases the decisions can be made consistently, even with imprecise data. Degenerate cases are decided with some tolerance. A test is applied for detecting when decisions made by the algorithm that logically depend on each other are inconsistent due to ambiguities arising from the approximation. In case of ambiguities, the inconsistencies can be resolved by increasing the tolerance. The proposed ambiguity test can be carried out in constant time whenever a decision is made during computation. Therefore, this method does not change the asymptotic complexity of the underlying algorithm in most practical cases, which is a clear advantage over previous approaches. |