使用格式[x,y,z,value]
的数据集,我可以创建一个3D散点图,如图所示,其中位置(x,y,z)
上每个点的颜色基于value
。请注意,所有图像都是相同的图,只是来自不同的视图。它旨在成为球体八分圆的表面。
有没有办法可以对3D中的颜色进行插值,这样我们才能看到固体表面而不是单个点?我正在寻找imagesc
的内容,但是在3D中。我尝试了各种各样的功能,包括scatteredInterpolant
,patch
,mesh
和surf
,但这些功能似乎不像我那样在3个维度上工作我喜欢。
答案 0 :(得分:0)
根据您的示例数据(带有多个shell),我将此程序放在一起。它使用trisurf
,因此它不需要网格数据。
function PlotColoredSpheres(x,y,z)
tol = 0.01;
r = sqrt(x.^2 + y.^2 + z.^2);
data = num2cell(sortrows([r, x, y, z], [1,2,3,4]),1);
[R, X, Y, Z] = data{:};
figure(1)
RUnique = uniquetol(r, tol);
for Ru = RUnique(:)'
j = abs(R - Ru) < tol;
tri = delaunay(X(j),Y(j));
trisurf(tri, X(j), Y(j), Z(j));
lighting phong
shading interp
hold on
end
hold off
end