Wolfram mathematica Mathematica和MouseListener-使用Mma开发交互式图形

Wolfram mathematica Mathematica和MouseListener-使用Mma开发交互式图形,wolfram-mathematica,Wolfram Mathematica,我想为Mathematica 3D图形添加交互性,而不是操纵,操纵很酷,但有其局限性。想想Mathematica中四个立方体问题演示的四个例子,点击其中一个立方体旋转一个立方体 问题 是否可以在Mathematica图形中捕捉鼠标事件(例如使用Java类或其他方式) 还是使用Java然后从Java调用Mathematica是建议的路线 或者(我希望不是)开发的交互式图形程序超出了Mathematica的功能范围 可用于捕捉各种鼠标事件(鼠标向上、鼠标向下、鼠标单击、鼠标拖动)。使用鼠标位置添加一

我想为Mathematica 3D图形添加交互性,而不是操纵,操纵很酷,但有其局限性。想想Mathematica中四个立方体问题演示的四个例子,点击其中一个立方体旋转一个立方体

问题

  • 是否可以在Mathematica图形中捕捉鼠标事件(例如使用Java类或其他方式)

  • 还是使用Java然后从Java调用Mathematica是建议的路线

  • 或者(我希望不是)开发的交互式图形程序超出了Mathematica的功能范围

  • 可用于捕捉各种鼠标事件(鼠标向上、鼠标向下、鼠标单击、鼠标拖动)。使用鼠标位置添加一些智能

    例如:

    DynamicModule[{col1 = Green, col2 = Blue}, Graphics[
      {
       EventHandler[
        Dynamic[{col1, Disk[]}, 
         ImageSize -> 
          Tiny], {"MouseClicked" :> (col1 = 
            col1 /. {Red -> Green, Green -> Red})}],
       EventHandler[
        Dynamic[{col2, Disk[{1, 1}]}, 
         ImageSize -> 
          Tiny], {"MouseClicked" :> (col2 = 
            col2 /. {Blue -> Yellow, Yellow -> Blue})}]
       }
      ]
     ]
    

    可以单独单击这些圆。为每个对象分别定义一个动作

    令人惊讶的是,这甚至适用于3D图形:

    DynamicModule[{col1 = Green, col2 = Blue}, 
     Graphics3D[
      {
       EventHandler[
        Dynamic[{col1, Sphere[]}, 
         ImageSize -> 
          Tiny], {"MouseClicked" :> (col1 = 
            col1 /. {Red -> Green, Green -> Red})}], 
       EventHandler[
        Dynamic[{col2, Sphere[{1, 1, 1}]}, 
         ImageSize -> 
          Tiny], {"MouseClicked" :> (col2 = 
            col2 /. {Blue -> Yellow, Yellow -> Blue})}]
       }
      ]
     ]
    

    @ndroock1感谢您接受我的回答。下次你可能会再等一会儿,以便得到更多的回应。舍尔德,我已经投了赞成票,但我会再次投票支持更新。我以前从未见过,可旋转的和所有的。:-)为什么在3D的情况下,鼠标尖不会像想要点击东西时所期望的那样拾取一个小箭头形状?在上面显示的2D示例中,屏幕上鼠标末端的工具提示是一个小箭头,但在3D示例中不是。我想这对用户来说有点让人困惑。@Nasser我想没有人是完美的。@Sjoerd,很高兴看到Mathematica有时仍然让你感到惊讶。