考虑以下因素:
lalist = {{{{1, 1}, 1}, {{3, 3}, 1}, {{5, 5}, 1}},
{{{1, 5}, 1}, {{3, 3}, 1}, {{5, 1}, 1}}}
Row[{
Graphics[{
Opacity[0.5],Red,
Disk @@@ lalist[[1]]},
Frame -> True],
Graphics[{
Opacity[0.5],Blue,
Disk @@@ lalist[[2]]},
Frame -> True]}
]
以下不是我需要的:
答案 0 :(得分:10)
喜欢这个吗?
Graphics3D[{{Texture[
Graphics[{Opacity[0.5], Blue, Disk @@@ lalist[[2]]},
Frame -> True]],
Polygon[{{-1, -1, -1}, {1, -1, -1}, {1, 1, -1}, {-1, 1, -1}},
VertexTextureCoordinates \[Rule] {{0, 0}, {1, 0}, {1, 1}, {0,
1}}]}, {Texture[
Graphics[{Opacity[0.5], Red, Disk @@@ lalist[[1]]},
Frame -> True]],
Polygon[{{-1, -1, 1}, {1, -1, 1}, {1, 1, 1}, {-1, 1, 1}},
VertexTextureCoordinates \[Rule] {{0, 0}, {1, 0}, {1, 1}, {0,
1}}]}}, Lighting \[Rule] "Neutral"]
很多不透明.2:
tab = Table[{Opacity \[Rule] .2,
Texture[Graphics[{Opacity[0.5], Blue, Disk @@@ lalist[[2]]},
Frame -> True]],
Polygon[{{-1, -1, z}, {1, -1, z}, {1, 1, z}, {-1, 1, z}},
VertexTextureCoordinates \[Rule] {{0, 0}, {1, 0}, {1, 1}, {0,
1}}]}, {z, -2, 2, 1}];
plt = Graphics3D[{tab}, Lighting \[Rule] "Neutral"]
和400在速度方面似乎没有太大问题(您可以轻松修改上面的代码以查看它)。
编辑:好的,只是傻了,试试这个Dynamic[Graphics3D[{{Texture[#],
Polygon[{{-1, -1, -1}, {1, -1, -1}, {1, 1, -1}, {-1, 1, -1}},
VertexTextureCoordinates \[Rule] {{0, 0}, {1, 0}, {1, 1}, {0,
1}}]}, {Texture[Rotate[#, \[Pi]/2]],
Polygon[{{-1, -1, 1}, {1, -1, 1}, {1, 1, 1}, {-1, 1, 1}},
VertexTextureCoordinates \[Rule] {{0, 0}, {1, 0}, {1, 1}, {0,
1}}]}}, Lighting \[Rule] "Neutral"] &@Binarize[CurrentImage[]]]
给出了
(或类似的东西),可旋转,实时更新等。
答案 1 :(得分:9)
请参阅“午餐时间游乐场:Mathematica的乐趣”中提供的解决方案:http://mathgis.blogspot.com/2009/02/howto-display-2d-plot-in-3d.html
答案 2 :(得分:4)
使用透明纹理在图层as ACL does中渲染这些圆圈是一个很好的解决方案,除非有人想要与生成的3D对象进行交互。 Rendering of 3D objects that contain transparent elements is done in software whereas otherwise it would have been done in hardware:
3D渲染器使用两种不同的渲染器 排序多边形的方法。对于 图形场景,包括没有 透明度,硬件加速 使用深度缓冲区。否则, 渲染器使用二进制空间分区 从中分割和排序多边形的树 任何观点。 BSP树速度较慢 创造而不是硬件 加速,但它提供了最多 一般支持多边形的能力。
在我的笔记本电脑上,只要透明物体开始出现,与3D图形的交互就会非常缓慢。
解决方案是使用3D磁盘而不是半透明平面,其中包含2D磁盘。由于MMA没有3D Disk
或Circle
s,如果你想做类似的事情,你必须自己动手。一个简单的版本就像是:
myDisk[{x_, y_, z_}, r_] :=
Polygon@Table[
{x, y, z} + r {Cos[\[Phi]], Sin[\[Phi]], 0} // N,
{\[Phi], 0, 2 \[Pi], 2 \[Pi]/200}
]
然后您的图层将按如下方式生成:
Graphics3D[
{
EdgeForm[],
{
Red,
myDisk[{1, 1, 0.5}, 0.5],
myDisk[{0, 0, 0.5}, 0.5],
myDisk[{-1, -1, 0.5}, 0.5]
},
{
Blue,
myDisk[{1, -1, -0.5}, 0.5],
myDisk[{0, 0, -0.5}, -0.5],
myDisk[{-1, 1, -0.5}, 0.5]}
}
]