From: Amir on
Just wondering if anyone knows of a matlab function(s) which will build a surface from (x,y,z) point cloud?

I do this now using CAD software (pro-e) and I mesh the constructed surface for FEA analysis later. I'd much rather use matlab for both the surface construction & meshing (simple quad elements) if possible and not a tremendous task.

Thanks in advance for your thoughts/recommendations.
From: Walter Roberson on
Amir wrote:
> Just wondering if anyone knows of a matlab function(s) which will build
> a surface from (x,y,z) point cloud?

Yes, but unless you want a convex hull, there is no unique solution unless you
add additional constraints.

For any finite set of points, there are an infinite number of planes that
divide the set into two (possibly unequal) subsets that could be considered as
top and bottom half-surfaces, possibly with a single-point bridge between
them. Without constraints to prevent this kind of arbitrary division, any of
the infinite number are as valid as any of the others.

Another way of phrasing this is that if your point cloud does not represent
the outside skin of a convex object, then there is no unique way of deciding
where the skin should follow, not unless you have some additional guidance as
to what it should look like.
From: arich82 on
Walter Roberson <roberson(a)hushmail.com> wrote in message <i2t25l$pkd$1(a)canopus.cc.umanitoba.ca>...
> Amir wrote:
> > Just wondering if anyone knows of a matlab function(s) which will build
> > a surface from (x,y,z) point cloud?
>
> Yes, but unless you want a convex hull, there is no unique solution unless you
> add additional constraints.
>
> For any finite set of points, there are an infinite number of planes that
> divide the set into two (possibly unequal) subsets that could be considered as
> top and bottom half-surfaces, possibly with a single-point bridge between
> them. Without constraints to prevent this kind of arbitrary division, any of
> the infinite number are as valid as any of the others.
>
> Another way of phrasing this is that if your point cloud does not represent
> the outside skin of a convex object, then there is no unique way of deciding
> where the skin should follow, not unless you have some additional guidance as
> to what it should look like.


Assuming you do have the x-y-z co-ords of the convex hull, this is what I usually use:
tri = delaunay(x,y);
h = trisurf(tri, x, y, z);

If not, maybe try this: <http://www.mathworks.com/matlabcentral/fileexchange/8998>.

Hope this helps.


--Andy
From: Amir on
Thanks so much Andy & Walter. Very helpful answers.