在Matlab中制作魔方?

时间:2014-08-03 10:48:13

标签: matlab rubiks-cube mupad

我正在尝试制作Rubik立方体的3D模型。

我最初使用补丁命令

尝试了它
vert = [0 0 0; 0 1 0; 1 1 0; 1 0 0 ; ...
        0 0 1;0 1 1; 1 1 1;1 0 1];
fac = [1 2 3 4; ...
    2 6 7 3; ...
    4 3 7 8; ...
    1 5 8 4; ...
    1 2 6 5; ...
    5 6 7 8];
k = patch('Faces',fac,'Vertices',vert,'FaceColor','r');  % patch function
material shiny;
alpha('color');
alphamap('rampdown');
view(30,30); 

但是因为我可能需要为每个表面赋予不同的颜色,所以我必须使用patch命令多次。因此,当我想

时,我无法引用整个立方体

我发现的另一种方法是在MuPAD中使用命令plot::Box

plot(plot::Box(0..1, 0..1, 0..1, Filled = TRUE,
               FillColor = RGB::Red),
     plot::Box(1..2, 0..1, 0..1, Filled = TRUE,
               FillColor = RGB::Red),
plot::Box(2..3, 0..1, 0..1, Filled = TRUE,
               FillColor = RGB::Red),
     plot::Box(0..1, 1..2, 0..1, Filled = TRUE,
               FillColor = RGB::Red),
plot::Box(0..1, 2..3, 0..1, Filled = TRUE,
               FillColor = RGB::Red),
     plot::Box(2..3, 1..2, 0..1, Filled = TRUE,
               FillColor = RGB::Red),
plot::Box(1..2, 2..3, 0..1,Filled = TRUE,
               FillColor = RGB::Red),
     plot::Box(2..3, 2..3, 0..1, Filled = TRUE,
               FillColor = RGB::RED,),
     Axes = None, Scaling = Constrained)

但在这里,我无法为每个表面分别提供颜色。我尝试使用FillColorDirection = [0, 0, 1]),但它无效

使用绘图时,是否可以为每张脸提供单独的颜色:Box 或者有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

我能够通过使用补丁本身来解决问题。 patch 有一个名为 FaceVertexCData 的属性。通过它,我们将能够指定每个面的颜色。我们还应将 Facecolor 平放如下所示

cube = patch('Faces',fac,'Vertices',vertice,'FaceVertexCData',color,'FaceColor','flat');  % patch function

在上面,颜色是6 * 3矩阵,其中每行具有所需颜色的RGB值。每行中的颜色按照定义的顺序应用于面。