Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Delaunay Triangulation of a concave hull

716 views
Skip to first unread message

Liana

unread,
Apr 12, 2011, 12:39:05 AM4/12/11
to
Hello,

please help me to solve the following problem:

I have a points cloud that corresponds to the concave hull. I need to make Delaunay Triangulation of that hull, but it seems to be working only for convex hulls. Give me please some idea of how to get DT for concave hulls. Moreover, I will need to check if a certain new point is inside the concave hull. I know how to do it for the convex hull, however I have no idea for the concave hull.

Thanks a lot!

John D'Errico

unread,
Apr 12, 2011, 7:22:04 AM4/12/11
to
"Liana" wrote in message <io0l19$9f0$1...@fred.mathworks.com>...

Oh, it still works. It just does not do what you wish for
it to do. These are obviously different things. Given a
random, scattered set of points from a domain, how
could MATLAB possibly know that the set represents a
concave domain or a convex one? For example,

xy = [0 0;0 1;1 0;1 1;.5 .5];
plot(xy(:,1),xy(:,2),'r*')

Is the true domain the convex unit square? Or should
MATLAB be intelligent enough to read your mind, and
know that you really wanted some concave portion of
that unit square? This is true for ANY scattered set of
points.

The mind reading toolbox is still in testing at TMW.

A delaunay tessellation ALWAYS produces a convex
result. This is the only unambiguous solution, as it
must be.

John

Liana

unread,
Apr 12, 2011, 1:32:04 PM4/12/11
to
Thank you, John. I agree with you. I know that DT is ment for convex hulls. I just though there might be some tricks and indirect solutions.

"John D'Errico" <wood...@rochester.rr.com> wrote in message <io1cks$t11$1...@fred.mathworks.com>...

Etienne Rousee

unread,
Apr 12, 2011, 1:53:19 PM4/12/11
to
Le 12/04/2011 13:22, John D'Errico a écrit :
> Oh, it still works. It just does not do what you wish for
> it to do. These are obviously different things. Given a
> random, scattered set of points from a domain, how
> could MATLAB possibly know that the set represents a
> concave domain or a convex one? For example,
>
> xy = [0 0;0 1;1 0;1 1;.5 .5];
> plot(xy(:,1),xy(:,2),'r*')
>
> Is the true domain the convex unit square? Or should
> MATLAB be intelligent enough to read your mind, and
> know that you really wanted some concave portion of
> that unit square? This is true for ANY scattered set of
> points.
>
> The mind reading toolbox is still in testing at TMW.
>
> A delaunay tessellation ALWAYS produces a convex
> result. This is the only unambiguous solution, as it
> must be.

Yes, but let S a set of points. Let its convex hull H.
We can look for a point M of S-H (in S, not in H) so that:
a polygon P build on S'=HU{M} (union) contains all S,
is concav, have a minimal area, and do not cross itself.
Then we can iterate on S'. We must bound the number
of iterations (how ?).
Do this satisfy the OP ?

Or an other idea: delete from the DT the triangle of
maximal area among the triangles of which an edge is
on the convex hull, and perhaps iterate.

--

Etienne

Liana

unread,
Apr 12, 2011, 4:39:05 PM4/12/11
to
Thanks, Etienne.

I found out that in my particular case I can check if the planes that belong to the convex hull are producing 90 degrees angles with any of XYZ planes. If the angle between the plane and any of XYZ planes is 90 degrees, then the plane belongs to the concave hull. Otherwise, it belongs to the convex hull. But it works only for my case. Hope I've clearly described my idea.

Etienne Rousee <eti...@rousee.org> wrote in message <io23g8$1gps$1...@talisker.lacave.net>...

John D'Errico

unread,
Apr 12, 2011, 5:30:19 PM4/12/11
to
"Liana" wrote in message <io22ak$3in$1...@fred.mathworks.com>...

> Thank you, John. I agree with you. I know that DT is ment for convex hulls. I just though there might be some tricks and indirect solutions.
>

You can try an alpha shape.

An alpha shape is an erosion of a delaunay tessellation.
Imagine a ball of radius alpha used as a probe. The ball
"rolls' around the perimeter of the point set. If the alpha
ball can touch an interior point of the tessellation, without
passing over any points, then delete those simplexes which
the ball crossed to do so.

There is an alpha shape tool on the FEX that works in 2-d.
I also have an alpha shape tool that I have not posted on
the FEX, but it works in any number of dimensions.

John

Liana

unread,
Apr 14, 2011, 2:27:05 PM4/14/11
to
John, I've been searching for 3D alpha shape function, however I haven't found any. If you can share your function, then it would be brilliant. Thanks.

"John D'Errico" <wood...@rochester.rr.com> wrote in message <io2g9b$41p$1...@fred.mathworks.com>...

Keith Ma

unread,
Apr 24, 2017, 7:08:07 AM4/24/17
to
For anyone finding their way here many years later (like myself), MATLAB now includes tools for working with alpha shapes. See the links below for more:

+ https://www.mathworks.com/help/matlab/ref/alphashape.html

+ https://www.mathworks.com/help/matlab/ref/alphashape-object.html

"Lulu" wrote in message <io0l19$9f0$1...@fred.mathworks.com>...
0 new messages