【问题标题】:Display multiple 2D plots in 3D using Graphics in Mathematica?使用 Mathematica 中的图形以 3D 显示多个 2D 图?
【发布时间】:2011-06-26 21:37:52
【问题描述】:

考虑以下几点:

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]}
    ]

  • 有没有可能我策划了蓝调 3D 中红色磁盘“后面”的磁盘 情节?

以下不是我需要的:

【问题讨论】:

    标签: graphics 3d wolfram-mathematica


    【解决方案1】:

    像这样?

    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[]]]
    

    给了

    (或类似的东西)、可旋转、实时更新等。

    【讨论】:

    • @acl,抱歉,没有,我真的想要一个 3D 情节 :) 我怎样才能更好地表达我的问题?
    • @acl,是的,你认为它可以处理其中的 400 个 :) 吗?
    • @acl !谢谢你 !我怎样才能让它透明,以便我们只看到形状?但是如果你看一个,你就看不到它后面的另一个?
    • @acl,当机立断!太棒了,给了我很多玩的机会!
    • @acl 这可能是图形驱动程序问题,但我没有以同样的方式获得您的最新数据。我得到一个有四个空层的塔。删除 Opacity \[Rule] .2 部分让我回到了四个级别,但它们是不透明的。我之前在 Texture 文档中的透明度示例中遇到过这个问题,但是在更新我的驱动程序之后它们就可以工作了。我一直在尝试它们,但现在它们不起作用。这几乎就像我的司机已经恢复到原来的状态。奇怪...
    【解决方案2】:

    在此处查看“Lunchtime Playground: Fun with Mathematica”中提出的解决方案:http://mathgis.blogspot.com/2009/02/howto-display-2d-plot-in-3d.html

    【讨论】:

      【解决方案3】:

      使用透明纹理在图层中渲染这些圆圈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 Disks 或 Circles 如果你想做类似的事情,你必须自己动手。一个简单的版本会是这样的:

      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]}
        }
       ]
      

      【讨论】:

      • 啊,但我的多边形上有我的脸!
      • @ACL 是的,我也试过你的代码。制作一些看起来很犯罪,相当难以辨认的肖像。非常适合化身。 (顺便说一句,你穿高领毛衣和胡须吗?)
      • 无论如何你是对的,Opacity 确实会减慢速度,即使在我的 macbook 上它的显卡很糟糕。
      • (关于高领毛衣和胡须,我也注意到了;2005 年完成博士学位时,我什至没有碰过高领毛衣和刮胡子……)
      • @acl 在我完成博士学位的前一年我有一个。让人想知道这里的其他人(没有看到很多女孩)做了什么。
      猜你喜欢
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-22
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      • 2012-03-30
      相关资源
      最近更新 更多