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

问题描述

|| 我想向Mathematica 3D图形添加交互性,除了使用Manipulate之外,它很酷,但有其局限性。想想Mathematica中四个立方体问题的演示的四个示例,单击其中一个立方体将旋转一个立方体。 问题。 是否有可能在Mathematica图形中捕获MouseEvent(例如,使用java类还是其他方法?) 还是使用Java然后从Java调用Mathematica作为建议路线? 或者(我希望不是)正在开发交互式图形程序,而不是使用Mathematica做什么?     

解决方法

        EventHandler可用于捕获各种鼠标事件(向上移动鼠标,向下移动鼠标,单击鼠标,拖动鼠标)。使用MousePosition添加一些智能。 例:
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}]},{\"MouseClicked\" :> (col2 = 
        col2 /. {Blue -> Yellow,Yellow -> Blue})}]
   }
  ]
 ]
圆圈可以独立单击。分别为每个对象定义一个动作。 令人惊讶的是,这甚至适用于3D图形:
DynamicModule[{col1 = Green,Graphics3D[
  {
   EventHandler[
    Dynamic[{col1,Sphere[]},Sphere[{1,1,Yellow -> Blue})}]
   }
  ]
 ]