3D plotted shape is not following curvature of data points
Show older comments
I am writing a code that creates a 3D shape from a set of data points and am running into this problem where the shape does not properly follow the curvature of the data points and rather draws a straight line. This can be seen on the sides of the figure below where the shape isn't properly following the data points into the curves.
My code:
load('seg_info.mat');
x = seg_info(:, 1);
y = seg_info(:, 2);
z = seg_info(:, 3);
colors = seg_info(:, 4);
scatter3(x,y,z);
hold on;
DT = delaunayTriangulation(x, y, z);
[K, v] = convexHull(DT);
trisurf(K, DT.Points(:,1), DT.Points(:,2), DT.Points(:,3), ...
'FaceAlpha', 0.5, 'EdgeColor', 'none', ...
'CData', colors, 'FaceColor', 'interp');
Does anyone know how I can improve my code to better fit these sides? I have tried using alpha shapes and boundary in an attempt to derive the concave hull but neither worked.

5 Comments
jonas
on 6 Jul 2020
Could you upload the data?
Sumeet Chaudhari
on 6 Jul 2020
Star Strider
on 6 Jul 2020
I suggested the boundary function.
Sumeet Chaudnari replied:
‘I tried using boundary with a shrink factor of 1 (which should provide the tightest bounds for the shape) but still end up with the same incorrect shape.’
So I deleted my Answer.
John D'Errico
on 6 Jul 2020
You think the problem is in the triangulation? A delaunay triangulation trinagulates the entire region within the convex hull of the data. In fact, you even used a convex hull there. So surely you would expect that the result will be a convex region. If you don't want it to be convex, then you can't use a convex hull. Or for that matter, a Delaunay triangulation.
Sumeet Chaudhari
on 6 Jul 2020
Accepted Answer
More Answers (0)
Categories
Find more on Surface and Mesh Plots in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
