Fast and Robust Smallest Enclosing Balls

I describe a C++ program for computing the smallest enclosing ball of a point set in d-dimensional space, using floating-point arithmetic only. The program is very fast for d ? 20, robust and simple (about 300 lines of code, excluding prototype definitions). Its new features are a pivoting approach resembling the simplex method for linear programming, and a robust update scheme for intermediate solutions. The program with complete documentation following the literate programming paradigm [3] is available on the Web.

[1]  Charles D. Hansen,et al.  Geometric optimization , 1993, Proceedings Visualization '93.

[2]  David B. Kirk,et al.  Graphics Gems III , 1992 .

[3]  Nimrod Megiddo,et al.  Linear-Time Algorithms for Linear Programming in R^3 and Related Problems , 1982, FOCS.

[4]  Donald E. Knuth,et al.  Literate Programming , 1984, Comput. J..

[5]  Jack Ritter,et al.  An efficient bounding sphere , 1990 .

[6]  N. Megiddo Linear-time algorithms for linear programming in R3 and related problems , 1982, FOCS 1982.

[7]  Andrew S. Glassner,et al.  Graphics Gems , 1990 .

[8]  A. Peressini,et al.  The Mathematics Of Nonlinear Programming , 1988 .

[9]  Nimrod Megiddo,et al.  Linear-time algorithms for linear programming in R3 and related problems , 1982, 23rd Annual Symposium on Foundations of Computer Science (sfcs 1982).

[10]  Xiaolin Wu A linear-Time Simple Bounding Volume Algorithm , 1992, Graphics Gems III.

[11]  Emo Welzl,et al.  Smallest enclosing disks (balls and ellipsoids) , 1991, New Results and New Trends in Computer Science.