Kinetic data structures in practice

Adding motion to geometric data structures creates a host of new computational issues. This thesis explores the issues encountered when using two different motion models---smooth, continuous motion of objects moving along algebraic trajectories and the discrete steps characteristic of physical simulations and optimization processes. The focus in this thesis is on how to perform the computations efficiently while maintaining exactness, rather than asymptotic complexity or other theoretical concerns. The work presented in this thesis has two main threads which correspond to the two motion models. The first thread concerns techniques for implementing kinetic data structures, a class of geometric data structures constructed on top of smoothly moving primitives. We developed a framework for kinetic data structures which was the first to support the necessary algebraic operations exactly in addition to providing a host of new tools for easing implementation and debugging. This framework has been incorporated into a software module that have been released as part of CGAL, the Computational Geometry Algorithms Library. The second thread looks at the problem of updating Delaunay triangulations, an important subproblem in a variety of simulations. After each step of the simulation, we have the Delaunay triangulation from the last time step and a perturbation of the underlying points as dictated by the computed forces. We need the Delaunay triangulation of the new, perturbed, points. We first present a kinetic data structures based update scheme that updates the prior triangulation to the desired one. This scheme, which required the development of several arithmetic filters, produces the desired triangulation significantly faster than computing it from scratch on a variety of real data sets. We then relax the kinetic data structure by processing events out of order, which results in a significantly faster update algorithm at the cost of occasional backtracking.