{"id":49,"date":"2005-04-08T00:44:39","date_gmt":"2005-04-08T06:44:39","guid":{"rendered":"http:\/\/www.ourada.org\/blog\/archives\/49"},"modified":"2005-04-08T00:44:39","modified_gmt":"2005-04-08T06:44:39","slug":"alpha-shapes","status":"publish","type":"post","link":"https:\/\/www.ourada.org\/blog\/archives\/49","title":{"rendered":"Alpha shapes"},"content":{"rendered":"<p>Since <a href=\"http:\/\/www.vrac.iastate.edu\/~darrin\/\">Darrin Lemmer<\/a> is stealing my Google juice with his posting of an email I sent to him :-), I&#8217;m going to post about that topic here.<\/p>\n<p>Alpha shapes are this pretty cool geometric formalism that can help make sense out of point clouds. I came to them in investigating a nice way to render tri-dexel structures, but that&#8217;s a topic for some other time.<\/p>\n<p>The simplest definition I&#8217;ve read is that alpha shapes are a generalization of convex hulls, in that they give a tunable parameter which, when set to infinity, produces a convex hull, but when set smaller produces a cell complex that more closely wraps the point set. At its best, subject to a couple of conditions that hold in useful cases, the wrapping is &#8216;perfect&#8217;. Anyway, I&#8217;ll let some others explain it, as I haven&#8217;t the patience right now, and I do have the links:<\/p>\n<p>The idea behind alpha shapes is explained pretty well on this page, with a nice little Java applet that helps give you an intuitive understanding of it: <a href=\"http:\/\/cgm.cs.mcgill.ca\/~godfried\/teaching\/projects97\/belair\/alpha.html\">alpha shape applet<\/a>.<\/p>\n<p>The implementation I used to play with this some is by Clarkson, at <a href=\"http:\/\/www.netlib.org\/voronoi\/hull.html\">Bell Labs<\/a>. Note that what this really implements should probably be called \u2018alpha solids\u2019. That\u2019s alpha shapes with the interior simplexes removed. That\u2019s generally what you want, but it\u2019s something to be aware of as a difference from other implementations and from the uses of the term in the literature. You\u2019ll probably want to use the \u2018-A\u2019 option when playing around to learn what it does; later you may want to use the \u2018-aa\u2019 option; in either case don\u2019t forget to use \u2018-mxxx\u2019.<\/p>\n<p>This is the alpha shapes page from one of the guys who first wrote up the idea, <a href=\"http:\/\/www.geom.uiuc.edu\/~mucke\/GeomDir\/shapes95\/xabs.html\">Ernst Mucke<\/a>. There\u2019s some (binary) code linked from there too, which is fun to play with but can\u2019t be integrated into your own code without getting the source from them.<\/p>\n<p>There used to be a page at <a href=\"http:\/\/www.alphashapes.org\/\">http:\/\/www.alphashapes.org\/<\/a> but I don\u2019t know where it is now. It seems to come and go.<\/p>\n<p>The <a href=\"http:\/\/www.cgal.org\/\">CGAL library<\/a> has an alpha shapes implementation that might be more suited to use within an application than the Clarkson code, although it doesn\u2019t seem to do the alpha solids thing, and it has a separate commercial license (but free and OS for non-commercial use).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Since Darrin Lemmer is stealing my Google juice with his posting of an email I sent to him :-), I&#8217;m going to post about that topic here. Alpha shapes are this pretty cool geometric formalism that can help make sense out of point clouds. I came to them in investigating a nice way to render [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[],"class_list":["post-49","post","type-post","status-publish","format-standard","hentry","category-general","author-admin"],"_links":{"self":[{"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/posts\/49","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/comments?post=49"}],"version-history":[{"count":0,"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/posts\/49\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/media?parent=49"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/categories?post=49"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ourada.org\/blog\/wp-json\/wp\/v2\/tags?post=49"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}