correct Creation of a 3D AlphaShape from Matrix

4 views (last 30 days)
I try to interpret my result using Alphashape for a 3D Pointcloud.
My target is to shape a geometry (freeformed plane), generated by any random Pointcloud (like in my example) "correctly", so i can calculate its surfacearea.
Things i dont understand and cant get rid off:
  1. 2D representation. Somehow matlab is hiding the z Axis, which is a bit confusing, even if the values in my testmatrix have a very small deviation
  2. The Alphavalue is very high from the beginning; (50) is the absolut minimum to generate any structure. At the same time i already have crosselements. Do I see here a very thin 3D shaped geometry (I assume) or is it a curved Plane, which has intersecting elements.
  3. when im using the 2D Alphashape, the representation is much more correct but flat and not placed in the 3D room. Im worrying that i could miss relevant surfacearea informations by using this result.
Is there a possibility which uses just triangles to reshape the Matrix as a curved plane? And how do i have to interpret this alpha value? is this 50 related to the values in the third row?
clear all
load testfile.mat
scatter3(Testmatrix(:,1),Testmatrix(:,2),Testmatrix(:,3))
hold on
shp = alphaShape(Testmatrix(:,1),Testmatrix(:,2),Testmatrix(:,3),50);
plot(shp)
totalsurfarea = surfaceArea(shp);

Answers (1)

Matt J
Matt J on 2 Aug 2023
Edited: Matt J on 2 Aug 2023
This might be what you want, but I can't tell for sure. It sounds like you're just trying to do a trisurf plot.
load testfile.mat
[x,y,z]=deal(Testmatrix(:,1),Testmatrix(:,2),Testmatrix(:,3));
T = delaunay(x,y);
scatter3(x,y,z,'r', 'filled'); hold on
trisurf(T,x,y,z,'FaceAlpha',0.3); hold off
axis square

Categories

Find more on Bounding Regions in Help Center and File Exchange

Products


Release

R2023a

Community Treasure Hunt

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

Start Hunting!