JavaFX从Transform

时间:2018-03-31 19:11:08

标签: java matrix javafx euler-angles javafx-3d

我正在尝试制作某种3D编辑器,我正在尝试制作一个“轨道”工具,就像Blender中的工具一样。

现在我想知道角度是什么。我使用José Pereda提供的代码here,但我需要角度在0到2π的范围内。我无法从获取的角度检索它们,因为输出值的范围不是-π到π,并且每个输出都不同。

此外,提取的角度需要彼此相对,就像你放置3个不同的旋转变换,其中每个后续的变换相对于前面的变换,最好是YXZ顺序,因为这是我在其他地方使用的顺序,以及编辑器要导出的模型格式。

根据要求,我已在Pastebin上传了the part of the code that is relevant to the question。据我所知,从印刷值来看,角度是以XYZ顺序相互相对的。对于角度计算,我使用链接问题的片段:

public static Vec3d getAngle(Node n) {
    Transform T = n.getLocalToSceneTransform();
    double roll = Math.atan2(-T.getMyx(), T.getMxx());
    double pitch = Math.atan2(-T.getMzy(), T.getMzz());
    double yaw = Math.atan2(T.getMzx(), Math.sqrt(T.getMzy() * T.getMzy() + T.getMzz() * T.getMzz()));
    return new Vec3d(roll, pitch, yaw);
}

只是一个快速通知,我对矩阵及其变换知之甚少,因为这是我们明年将在学校里学到的东西,这让我更难理解。

0 个答案:

没有答案