【发布时间】:2015-11-01 00:03:16
【问题描述】:
我想构建一个具有 x、y 和 z 维度的空心立方体,并用许多小立方体填充它的体积。下图与我想做的类似,
但是,我想用小立方体代替小球体。
在构建立方体并用其他小立方体填充它之后,我想构建一个矩阵来表示大立方体中的这些小立方体,这是因为我希望能够访问每个小立方体,其中我需要改变它的颜色。
是否可以用这个矩阵来表示小立方体的结构?假设每个小立方体都用-1表示,我的意思是矩阵的一行中的所有-1都是同一行中的小立方体,而一列中的所有-1实际上是同一列中的小立方体(相邻大立方体必须是矩阵内的邻居)。由于大立方体是 3D 形状,我希望这样的矩阵是具有行、列和深度度量的 3D 矩阵。深度可能代表我们拥有的不同小立方体的层,即在深度 1 处,我们有一组行和列代表第一深度的小立方体。之后,我想遍历这个矩阵并将 -1 更改为代表某种颜色的其他数字。如何使用矩阵中的相应数字改变一些小立方体的颜色?比如让索引(1,1,1)处的数字为0,让它代表黄色,如何将对应的立方体颜色改为黄色?我在想patch 函数,但是如何将它应用到对应的立方体上呢?
如何用小方块填充方块?还有,如何构建上述矩阵?
这是一个将一个小立方体放在大立方体内的代码,但这会将它放在中心,我尝试按照提供的图片以有组织的方式用小立方体填充大立方体,但我做不到弄清楚如何做到这一点。
clf;
figure(1);
format compact
h(1) = axes('Position',[0.2 0.2 0.6 0.6]);
%These are the different 8 vertices of the cube, each is defined by its 3 x
%y z coordinates:
vert = [1 1 -1;
-1 1 -1;
-1 1 1;
1 1 1;
-1 -1 1;
1 -1 1;
1 -1 -1;
-1 -1 -1];
%These are the 6 faces of the cube, each is defined by connecting 4 of the
%available vertices:
fac = [1 2 3 4;
4 3 5 6;
6 7 8 5;
1 2 8 7;
6 7 1 4;
2 3 5 8];
% I defined a new cube whose length is 1 and centers at the origin.
vert2 = vert * .05;
fac2 = fac;
patch('Faces',fac,'Vertices',vert,'Facecolor', 'w'); % patch function for the first big cube.
axis([-1, 1, -1, 1, -1, 1]);
axis equal;
hold on;
patch('Faces', fac2, 'Vertices', vert2, 'FaceColor', 'r');
material metal;
alpha('color');
alphamap('rampdown');
view(3);
谁能告诉我如何填充立方体并构造矩阵?
谢谢。
【问题讨论】:
标签: matlab image-processing matrix graphics 3d