Projection of a point to a convex hull in d dimensions - MathOverflow most recent 30 from http://mathoverflow.net 2013-05-22T20:10:27Z http://mathoverflow.net/feeds/question/118088 http://www.creativecommons.org/licenses/by-nc/2.5/rdf http://mathoverflow.net/questions/118088/projection-of-a-point-to-a-convex-hull-in-d-dimensions Projection of a point to a convex hull in d dimensions unknown (google) 2013-01-04T21:22:49Z 2013-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#118093 Answer by Joseph O'Rourke for Projection of a point to a convex hull in d dimensions Joseph O'Rourke 2013-01-04T22:10:35Z 2013-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$&mdash;which often amounts to finding the minimum distance from a point to a polyhedron&mdash;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#118097 Answer by unknown (google) for Projection of a point to a convex hull in d dimensions unknown (google) 2013-01-05T00:03:05Z 2013-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>