Geometric predicates are a basic ingredient to implement a vast range of algorithms in computational geometry. Modern implementations employ floating point filtering techniques to combine efficiency and robustness, and state-of-the-art predicates are guaranteed to be always exact while being only slightly slower than corresponding (inexact) floating point implementations. Unfortunately, if the input to these predicates is an intermediate construction of an algorithm, its floating point representation may be affected by an approximation error, and correctness is no longer guaranteed. This paper introduces the concept of indirect geometric predicate: instead of taking the intermediate construction as an explicit input, an indirect predicate considers the primitive geometric elements which are combined to produce such a construction. This makes it possible to keep track of the floating point approximation, and thus to exploit efficient filters and expansion arithmetic to exactly resolve the predicate with minimal overhead with respect to a naive floating point implementation. As a representative example, we show how to extend standard predicates to the case of points of intersection of linear elements (i.e. lines and planes) and show that, on classical problems, this approach outperforms state-of-the-art solutions based on lazy exact intermediate representations.
翻译:现代实施采用浮动点过滤技术,将效率和稳健性结合起来,并且保证最先进的上游技术总是精确的,同时只比相应的(不精确的)浮点执行略慢一些。 不幸的是,如果这些上游的输入是算法的中间构造,那么其浮点表示可能受到近似误差的影响,正确性就不再得到保证。本文介绍间接几何上游概念:非以中间构造为明确输入,而是间接上游考虑原始几何要素,这些元素结合产生这样的构造。这样可以跟踪浮点近似,从而利用高效过滤器和扩大算术,以精确解决与天性浮点执行有关的顶部的顶部。有代表性的例子是,我们展示如何将标准上游扩展到线性元素(即线条和平面)交叉点的情况,并显示在古典问题上,这种方法在轨迹的中间方形图上超越了状态-艺术解决办法。