Projection of a point to a convex hull in d dimensions - MathOverflow most recent 30 from http://mathoverflow.net2013-05-22T20:10:27Zhttp://mathoverflow.net/feeds/question/118088http://www.creativecommons.org/licenses/by-nc/2.5/rdfhttp://mathoverflow.net/questions/118088/projection-of-a-point-to-a-convex-hull-in-d-dimensionsProjection of a point to a convex hull in d dimensionsunknown (google)2013-01-04T21:22:49Z2013-01-05T00:03:05Z
<p>Hi, </p>
<p>I've got n points in d dimensions (typically n is around 30k-60k and d is 5 or 6). I'm using qhull to calculate the Delaunay triangulation and the convex hull of the set of points. </p>
<p>You can assume each point was drawn from the normal multidimensional distribution. I need the triangulation for function interpolation which works quite well once you calculate the simplex/barycentric coordinates of the query point p. </p>
<p>The problem is how to handle points that are outside the convex hull (which occurs fairly infrequently - but does occur)? I need a way to project the point onto the hull's surface and calculate where on the d-1 dimensional face it hit so that I can interpolate this point (essentially clipping the point to the region of the hull).</p>
<p>Is there an efficient algorithm out there that does this? I came across <a href="http://www.csd.uwo.ca/~vmazalov/pubs/2012-eccad-distance-to-simplex.pdf" rel="nofollow">this</a> on the web but am not clear how to apply it across the entire hull efficiently.</p>
<p>Thanks</p>
http://mathoverflow.net/questions/118088/projection-of-a-point-to-a-convex-hull-in-d-dimensions/118093#118093Answer by Joseph O'Rourke for Projection of a point to a convex hull in d dimensionsJoseph O'Rourke2013-01-04T22:10:35Z2013-01-04T22:10:35Z<p>The natural projection of your exterior point $a$ is to the point $b$ on the polytope that is
closest to $a$, i.e., which minimizes the distance $|ab|$. This can be formulated as a <a href="http://en.wikipedia.org/wiki/Quadratic_programming" rel="nofollow">quadratic
programming problem</a>, for which there are many algorithms. </p>
<p>Quite some time ago, Gilbert worked out some methods:</p>
<blockquote>
<p>(1) E. G. Gilbert, "Minimizing the quadratic form on a convex set", <em>SIAM J. Contr.</em>, vol. 4, pp.61-79 1966 </p>
<p>(2) E. G. Gilbert, D. W. Johnson, and S. S. Keerthi, "A fast procedure for computing the distance between complex objects in three dimensional space", <em>IEEE J. Robot. Automat.</em>, vol. 4, pp.193-203 1988 (<a href="http://graphics.stanford.edu/courses/cs448b-00-winter/papers/gilbert.pdf" rel="nofollow">PDF link</a>)</p>
</blockquote>
<p>The first sentence of the 2nd paper above is: "An efficient and reliable algorithm for computing
the Euclidean distance between a pair of convex sets in $\mathbb{R}^m$ is described." This algorithm has become known as the <em>GJK algorithm</em>.</p>
<p>I doubt this is the last word on the topic. There is a huge literature on collision detection in
$\mathbb{R}^3$—which often amounts to finding the minimum distance from a point to a polyhedron—but I don't know how much of it scales gracefully to dimensions $5$ or $6$. </p>
http://mathoverflow.net/questions/118088/projection-of-a-point-to-a-convex-hull-in-d-dimensions/118097#118097Answer by unknown (google) for Projection of a point to a convex hull in d dimensionsunknown (google)2013-01-05T00:03:05Z2013-01-05T00:03:05Z<p>I found a very simple <a href="http://arxiv.org/pdf/1101.6081.pdf" rel="nofollow">algorithm</a> that returns the barycentric coordinates of an arbitrary point in n dimensions - so what I've done is to find all the outermost simplexes (in qhull you just check that at least 1 entry in the neighbours list is -1) - and by brute force check the distance from the query point (in each simplexes barycentric coordinates) to the simplex's projection and pick the smallest one. </p>