title: Farthest point from (potentially-overlapping) spheres
body: <p>I am looking for a reasonably efficient algorithm (and likely associated data structure) to accomplish the following in a reasonably low dimension (d&lt;10; generally d=2 or 3):</p>
  <p>Given a set of (potentially-overlapping!) spheres and a fixed bounding box, I wish to be able to:</p>
  <ol>
  <li>Query for the point within said bounding box that is <em>farthest</em> from any sphere.
  <ol>
  <li>If there are multiple such points, an arbitrary choice is fine.</li>
  <li>A point within a sphere is at zero distance (that is, these are balls not hollow spheres.)</li>
  <li>If every point is within at least one sphere, erroring out here, or at 2.1., or returning an arbitrary point, are all fine.</li>
  <li>Ideally I am looking for an exact (up to numerical error) solution; a convergent approximation with error bounds is workable.</li>
  </ol>
  </li>
  <li>Add new spheres to the set.
  <ol>
  <li>If every point is now within at least one sphere, erroring out here or at 1.3. is fine.</li>
  </ol>
  </li>
  </ol>
  <p>Doing some initial preprocessing is fine.</p>
  <p>(Note that the spheres <em>can</em> overlap, and <em>can</em> have varying radii.)</p>
  <p>(Fixed bounding box, fixed bounding sphere, or simply an implicit convex hull. Any are workable, whichever is easiest.)</p>
  <p>At a first glance this is deceptively similar to the Largest Empty Sphere problem (for which you can accomplish the above with a Veronoi diagram and some processing), however the change from &quot;points to avoid&quot; to &quot;spheres to avoid&quot; stops this from working and I haven't been able to figure out a straightforward extension.</p>
  <p>Another approach that seems to work is to just repeatedly run the Largest Empty Sphere problem, starting with points to avoid at the center point of every sphere and each iteration adding the closest point across all spheres to the resulting current solution to the set of points to avoid, however this is expensive and doesn't have an obvious error bound.</p>
  <p>Ditto, I look at this problem and go &quot;this looks like the sort of thing you ought to be able to massage a BSP tree into doing&quot;, but most BSP algorithms I've seen tend more to be focused on <em>nearest</em> point, not <em>farthest</em>.</p>