问题描述
||
我想向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})}]
}
]
]