如何获得JavaFX中节点的绝对旋转(How to get the absolute rotatio

2019-10-20 03:39发布

在JavaFX节点的rotateProperty为我提供了其相对于其父度旋转。 有没有办法让度或者相对于场景或画面绝对旋转,?

例如,有一种方法来计算从节点的变换对象)的角度我可以从getLocalToSceneTransform得到(?

Answer 1:

所以,我做数学自己,对我来说,我无论是通过获得的旋转弧度:

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;


Answer 2:

问题是没有真正明确定义,由于在场景图不同的节点可能绕不同的轴线。

所述getLocalToSceneTransform()方法将返回一个Transform表示从本地变换坐标系的节点的坐标系的Scene 。 这是一个仿射变换; 可以提取相对于x轴y轴和z轴,如果你喜欢它的一个3×4矩阵表示。



文章来源: How to get the absolute rotation of a Node in JavaFX