matlab - 每个单元格中都有球体的 3D 网格

标签 matlab matlab-figure

我正在尝试创建一个与此类似的图表。

enter image description here

每个单元格中都有球体的 3D 网格图。我想使用 matlab,略有不同的是我希望球体上有特定的图像。

这可能吗?如果可能的话,什么是一个好的起点?

最佳答案

这是我如何使用 bubbleplot3 来做到这一点除了使用 warp 之外,还可以从文件交换中绘制一组均匀分布的球体将图像显示为球体的纹理映射表面。基本上使用bubbleplot3创建球体,然后在for循环中获取每个单独的表面对象,并对它们调用warp以用图像替换其纹理贴图。

对于生成网格立方体,我没有任何功劳,并且稍微修改了@Raf的答案here .

clc;clear;close all

%// Read image
C = flipud(imread('peppers.png'));

%// Generate array of spheres
Radius = 1;
[x,y,z] = meshgrid(0:2:4,0:2:4,0:2:4);
r=repmat(Radius,1,numel(x));

%// Call bubbleplot3
hBubble = bubbleplot3(x,y,z,r,[],[],[],[]);

hold on

%// Get surfaces objects
SurfHandles = findobj('type','surface');

%// Use warp function to replace colordata with image
for k = 1:numel(SurfHandles)
    warp(SurfHandles(k).XData,SurfHandles(k).YData,SurfHandles(k).ZData,C)
end

%// Now cube.
%// Credit to Raf here: https://stackoverflow.com/questions/7309188/how-to-plot-3d-grid-cube-in-matlab
CubeData = -1:2:5;
[X, Y] = meshgrid(CubeData,CubeData);                         
x = [X(:) X(:)]';                                
y = [Y(:) Y(:)]';
z = [repmat(CubeData(1),1,length(x)); repmat(CubeData(end),1,length(x))];
col = 'b';

plot3(x,y,z,col,'Color','k');                                         
plot3(y,z,x,col,'Color','k');
plot3(z,x,y,col,'Color','k');

rotate3d on

并输出:

enter image description here

关于matlab - 每个单元格中都有球体的 3D 网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32338615/

相关文章:

matlab - 在不将人物置于前景的情况下绘制人物

MATLAB CSV 文件读取

matlab - 让matlab的控制台向下滚动

image - 导入多个图像matlab

matlab - MATLAB 图像顶部和底部的标题

matlab - 4D "plot"的 2D 轮廓/切片?

matlab - i3 窗口管理器 - 将 MATLAB 图形窗口放入特定工作区

matlab - 如何从 FFT 获取调幅信号的相位角

.net - 有没有办法在 F# 中使用 Matlab 图像处理工具箱?

matlab - 仅删除轴线而不影响刻度和刻度标签