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