
surface data representation (triangulation...?)
2 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
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 Commenti
Risposte (1)
Mike Garrity
il 22 Ott 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.
Vedere anche
Categorie
Scopri di più su Surface and Mesh Plots in Help Center e File Exchange
Prodotti
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!