
surface data representation (triangulation...?)
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Dear all, after searching by myself for a couple of days I allow myself to post a question. How do i plot a colored surface in 3d space, given the data points as (x,y,z, property)? The points clearly lie on a surface, but the shape is non-trivial and non-convex.
the best i got is using scatter3, but this is clearly not what I am looking for:
clc
clear all
close all
load('datafile.mat');
n=1; %only load every nth point for better performance
x= data(1:n:end,1);
y= data(1:n:end,2);
z= data(1:n:end,3);
prop= data(1:n:end,4);
%plot all data
figure(1)
scatter3(x,y,z,2,prop)
%plot only one quadrant for better visibility
xx=x(and(x>0,y>0))
yy=y(and(x>0,y>0))
zz=z(and(x>0,y>0))
pp=prop(and(x>0,y>0))
figure(2)
scatter3(xx,yy,zz,2,pp)
giving

What i tried before is delaunay triangulation, freesurface and convexhull. I could not find something that would return a list of triangles rather than tetraeders. i thought about deviding this surface into fractions that can be seen as function z=f(x,y) and apply the 2d-triagnulation. but this is tideous and not straight forward.
thanks for any suggestions! best, martin
0 Kommentare
Antworten (1)
Mike Garrity
am 22 Okt. 2014
The new alphashape command does a pretty good job with this. Here's what I get with the defaults:
shp=alphaShape(x,y,z);
plot(shp,'EdgeColor','none');
camlight
axis normal

You might be able to do better by adjusting some of the parameters.
Siehe auch
Kategorien
Mehr zu Surface and Mesh Plots finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!