在JavaFX中,Node的rotateProperty为我提供了相对于其父级的旋转度。有没有办法获得相对于场景或屏幕的度数绝对旋转?
例如,有没有办法从我可以从getLocalToSceneTransform()得到的节点的Transform对象计算角度?
答案 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矩阵表示。