我一直在尝试使用几种方法在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功能的不透明度和颜色?或者有更好的方法来绘制这个矩阵吗?
非常感谢你的时间!!
答案 0 :(得分:1)
这是Image3D
的替代品 L=10;
M=RandomInteger[{0,1},{L,L,L}];
Graphics3D[
First@Last@Reap[MapIndexed[ If[# == 1, Sow[Cuboid[#2]]] &, M, -1]]]
使用Sow[{ColorData["SouthwestColors"][RandomReal[{0, 1}]], Cuboid[#2]}]
用于比较的image3d版本。
长方体版本也表现得更好。 Image3D
是如此之慢,我甚至不想弄乱它,看看是否有修复模糊性。