The discussion on Boolean predicates argues that polygon intersection, re-triangulation and ray-casting algorithms in Rn may all be cast in a unified framework which requires only the evaluation of the determinant:
{1}
{2}
As a result, the robustness of the overall procedure equates to a robust implementation of this signed volume calculation. Fortunately, accurate and rapid evaluation of this determinant has long been the subject of study in computational geometry and computer science.
Computing the sign of eq.{2} constitutes a topological primitive, which is an operation that tests an input and always yields one of a prespecified number of results. Of course, such primitives can only classify, and new objects - like the the actual locations of intersection points (see fig.1 boolean intersections) - cannot be determined without further work. Such topological primitives do, however, provide the intersections implicitly and this information is all that is really needed to establish the connectivity of the segment list describing the intersection.
In an effort to perform as much of the computation as possible on the floating-point hardware, the Cart3d codes first compute eq.{2} in floating point, and then make an a-posteriori estimate of the round-off error (cf. [2],[3]) If the round-off error is of the same order as the signed volume, then the case is considered indeterminate and we look to exact arithmetic and introduce the tie-breaking algorithm for truly degenerate cases. This approach may be characterized as a floating point filter, since only cases that are "dangerous" are selected for further processing. A brief discussion of these topics is available on the web at the Robust Predicates Page along with substantial downloadable documentation. Since only a very small fraction of the computations fall through the filter, the speed penalty for using exact arithmetic on virtually all realistic examples is essentially negligible. To further speed things up, the routines presented in [2] have been optimized for float and double data types on IEEE compliant hardware.
-- more details coming soon --
[2] Shewchuk, J.R., Robust Adaptive Floating-Point Geometric Predicates, Proceedings of the Twelfth Annual Symposium on Computational Geometry, pages 141-150, ACM, May 1996. Abstract
[3] Priest, D.M., "Algorithms for Arbitrary Precision Floating Point Arithmetic", Tenth Symposium on Computer Arithmetic, pp. 132-143, IEEE Comp. Soc. Press, 1991.
[4] Edelsbrunner, H., and Mücke, E.P., "Simulation of Simplicity: A Technique to Cope with Degenerate Cases in Geometric Algorithms." ACM Transactions of Graphics, 9(1):66-104,1990.
| For more information mail to: aftosmis@nas.nasa.gov |
| Return to Cart3d or Michael Aftosmis's homepage |