首页 > 解决方案 > 如何将矢量转换为 z 旋转角度

问题描述

请帮忙。

我在 3D max 上的相机方向是:

90 -30 0

当我导出到 X3D 文件时,它将具有以下方向:

0, 0, -1, -0.524

我可以很容易地将其转换为相机在 z 轴上的角度,如下所示:

-1 * -0.524 * 180/Math.PI = 30;

问题:

但是当我在 3D max 上旋转相机时:

90 -30 90

在 X3D 上我得到这个向量:

-0.251, 0.935, -0.251,-1.638

如何计算z角的值?

标签: actionscript-33dstage3dx3d

解决方案


在 Stage3D 中找到了一种方法,在其他平台上可能相同:

首先你创建一个空的matrix3D:

var m3d:Matrix3D = new Matrix3D();

然后使用 X3D 文件中的给定方向矢量旋转它:

m3d.appendRotation(v.w*180/Math.PI,new Vector3D(v.x,v.y,v.z));

分解矩阵

var angles:Vector3D = m3d.decompose("eulerAngles")[1];

你得到 xyz 弧度角,所以将弧度转为度数:

var _z:Number = angles.z*180/Math.PI;

推荐阅读