Trying to understand behavior of holes in alphaShapes.

조회 수: 28(최근 30일)
Matt J
Matt J 2021년 11월 19일
댓글: Matt J 2021년 11월 22일
I have created the attached alphaShape object, which contains a hole.
load alph_shape;
shp
shp =
alphaShape with properties: Points: [6546×2 double] Alpha: 10 HoleThreshold: 0 RegionThreshold: 0
plot(shp)
I am trying to understand why, when I drastically increase the alpha radius,
shp.Alpha=1e6;
edges are added that transect the hole. Clearly, the radius is much bigger than the dimensions of the hole, so how can the enlargement cause new edges to be added inside it?
plot(shp)

채택된 답변

Matt J
Matt J 2021년 11월 22일
편집: Matt J 2021년 11월 22일
I found the following in posted material for a course at Stanford. It's a pretty intuitive explanation of how alpha shapes work, and clears up my question, if it is accurate.
-------------------------
As mentioned in Edelsbrunner’s and M ̈ucke’s paper [3], one can intuitively think of an α-shape as the following. Imagine a huge mass of ice-cream making up the space Rd and containing the points S as “hard” chocolate pieces. Using one of these sphere-formed ice-cream spoons we carve out all parts of the ice-cream block we can reach without bumping into chocolate pieces, thereby even carving out holes in the inside ([Ed. the ice cream spoon is allowed to travel freely through space, even to within areas girded by the points S. However, it is allowed to draw a scoop if and only if the points in S can be excluded. ]).
We will eventually end up with a (not necessarily convex) object bounded by caps, arcs and points. If we now straighten all “round” faces to triangles and line segments, we have an intuitive description of what is called the α-shape of S...And what is α in the game? α is the radius of the carving spoon.

추가 답변(1개)

Kumar Pallav
Kumar Pallav 2021년 11월 22일
Hi,
The default alpha radius is one which is the smallest alpha radius that produces an alpha shape that encloses all points.
From my understanding, as you increase the 'alpha' value, it no longer produces the tighest fitting alpha shape, and you can observe this with the holes getting filled by points connected within that radius.
For an extreme value of 'alpha'=inf, it basically produces a conves hull with all the points inside it.
Since, you have given a large value of alpha, it is basically producing a convex hull.
Refer this for more on alphaShape.
Hope this helps!
  댓글 수: 2
Matt J
Matt J 2021년 11월 22일
The source I found for my other answer makes me wonder if the wiki page had a typo and "none of the point set" should really have been "one of the point set".

댓글을 달려면 로그인하십시오.

태그

제품


릴리스

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by