如何在JavaFX中获取Node的绝对旋转

时间:2014-05-19 15:25:54

标签: javafx javafx-8

在JavaFX中,Node的rotateProperty为我提供了相对于其父级的旋转度。有没有办法获得相对于场景或屏幕的度数绝对旋转?

例如,有没有办法从我可以从getLocalToSceneTransform()得到的节点的Transform对象计算角度?

2 个答案:

答案 0 :(得分:2)

所以,我自己做了数学计算,对于我的情况,我要么通过以下方式获得Radians的旋转:

double xx = myNode.getLocalToSceneTransform().getMxx();
double xy = myNode.getLocalToSceneTransform().getMxy();
double angle = Math.atan2(-xy, xx);

double yx = myNode.getLocalToSceneTransform().getMyx();
double yy = myNode.getLocalToSceneTransform().getMyy();
double angle = Math.atan2(yx, yy);

在这两种情况下,都可以转换为360度:

angle = Math.toDegrees(angle);
angle = angle < 0 ? angle + 360 : angle;

答案 1 :(得分:0)

问题的定义并不是很明确,因为场景图中的不同节点可能会围绕不同的轴旋转。

getLocalToSceneTransform()方法将返回Transform,表示从节点的本地坐标系到Scene的坐标系的转换。这是一种仿射变换;如果您愿意,可以相对于x轴和z轴提取它的3x4矩阵表示。