在Mathematica中绘制3D布尔数组

时间:2014-04-09 04:11:20

标签: arrays matrix 3d plot wolfram-mathematica

我一直在尝试使用几种方法在Mathematica中绘制n乘n布尔数组的3D图,但它们都没有产生令人满意的结果。我希望3D绘图在M [i,j,k] = 1时具有立方体,并且当M [i,j,k] = 0时,只留下空白。以下是我得到的最好结果。

L=10
M = RandomReal[{0, 1}, {L, L, L}];
For[k = 1, k <= L, k++,
  For[j = 1, j <= L, j++,
   For[i = 1, i <= L, i++,
    If[M[[i, j, k]] < 0.5,
     M[[i, j, k]] = 1,
     M[[i, j, k]] = 0
     ]]]];
Image3D[M, ImageSize -> 500, Boxed -> True]

Image3D功能在立方体上给人一种非常蓬松和不透明的外观,我无法改变!

在这种情况下我是否可以改变Image3D功能的不透明度和颜色?或者有更好的方法来绘制这个矩阵吗?

非常感谢你的时间!!

1 个答案:

答案 0 :(得分:1)

这是Image3D

的替代品
 L=10;
 M=RandomInteger[{0,1},{L,L,L}];
 Graphics3D[
    First@Last@Reap[MapIndexed[ If[# == 1, Sow[Cuboid[#2]]] &, M, -1]]]

enter image description here

使用Sow[{ColorData["SouthwestColors"][RandomReal[{0, 1}]], Cuboid[#2]}]

进行着色

enter image description here

用于比较的image3d版本。

enter image description here

长方体版本也表现得更好。 Image3D是如此之慢,我甚至不想弄乱它,看看是否有修复模糊性。