背景
https://marketplace.gephi.org/plugin/force-atlas-3d/
问题
- 我在屏幕上有一个以(x,y,z)坐标表示的节点网络
- 鼠标指针的位置用屏幕上的(x,y)坐标表示(嗯,正常)。
=>我想使用鼠标拖动动作(x和y的变化)来旋转节点网络的视图。
将鼠标向左拖动会导致节点绕垂直轴向左旋转(“旋转”在此处未按操作定义,但我希望您可视化我的意思)。
将鼠标拖动到屏幕底部会导致节点绕水平轴旋转,朝观察者方向旋转。
我认为我需要一种方法,将鼠标坐标的变化作为输入,并返回每个节点坐标的相应变体。
备注
- 这里没有相机移动。
- 该解决方案是用Java开发的 - 也许像Java3D这样的库在这里是相关的?
任何帮助将不胜感激 - 并在我正在构建的Gephi插件中得到承认! THX!
答案 0 :(得分:3)
尝试使用orbit behavior类
OrbitBehavior orbit = new OrbitBehavior(canvas, OrbitBehavior.REVERSE_ROTATE);
orbit.setSchedulingBounds(new BoundingSphere());
universe.getViewingPlatform().setViewPlatformBehavior(orbit);
它会向所有方向旋转视图。但是,您可以通过将Y旋转移动倍数设置为0来限制旋转到左右方向(取决于鼠标的方向),如下所示:
orbit.setRotXFactor(2);//or any other value
orbit.setRotYFactor(0);