Javascript 从另一个矢量和旋转计算三维矢量
所以这是一个困难的问题。我正在使用Javascript 从另一个矢量和旋转计算三维矢量,javascript,vector,3d,three.js,Javascript,Vector,3d,Three.js,所以这是一个困难的问题。我正在使用three.js,我需要计算一个特定的向量。 我有一个向量(我们称它为C),我有一个旋转(r),以欧拉的形式。现在我想计算第二个向量,它减去自身,加上旋转的欧拉,等于第一个向量。 所以在伪代码中: X - X(r) = C 将euler转换为3x3矩阵。请注意,three.js使用的不是正确的欧拉角。通过按顺序相乘,构造所需矩阵R 请注意,X=I*X其中I是3x3单位矩阵 方程变成了(I-R)*X=C,这很容易反转:X=inverse(I-R)*C。() 编
three.js
,我需要计算一个特定的向量。我有一个向量(我们称它为
C
),我有一个旋转(r)
,以欧拉的形式。现在我想计算第二个向量,它减去自身,加上旋转的欧拉,等于第一个向量。
所以在伪代码中:
X - X(r) = C
将euler
转换为3x3矩阵。请注意,three.js
使用的不是正确的欧拉角。通过按顺序相乘,构造所需矩阵R
请注意,X=I*X
其中I
是3x3单位矩阵
方程变成了(I-R)*X=C
,这很容易反转:X=inverse(I-R)*C
。()
编辑:如何计算R
:
- 使用标准旋转矩阵:
- 对于
euler=(x,y,z)
,R=Rz(z)*Ry(y)*Rx(x)
:
- 最后:
var R = Rz.multiply(Ry.multiply(Rx));
var ImR = (new Matrix3()).set(
1.0 - R.elements[0], -R.elements[1], -R.elements[2],
-R.elements[3], 1.0 - R.elements[4], -R.elements[5],
-R.elements[6], -R.elements[7], 1.0 - R.elements[8]
);
// multiply ImR.getInverse() with C to get X
欢迎来到Stackoverflow!请阅读和。谢谢。你能详细介绍一下如何构建矩阵吗?@JannisX11如果你对我提供的链接理解有困难,那么是的,我会很快发布。那太好了。我很少使用矩阵。
var R = Rz.multiply(Ry.multiply(Rx));
var ImR = (new Matrix3()).set(
1.0 - R.elements[0], -R.elements[1], -R.elements[2],
-R.elements[3], 1.0 - R.elements[4], -R.elements[5],
-R.elements[6], -R.elements[7], 1.0 - R.elements[8]
);
// multiply ImR.getInverse() with C to get X