查找 LookAt 矩阵的向上向量(2 次旋转)



我正在尝试建立一个 lookAt 矩阵,从 {5,5,10} 的眼睛看点 {0,0,0}。我已经成功地实现了 {5,0,10} 处眼睛的 LookAt 矩阵,但第二个角度(y 方向(抛出了我的"向上"向量,所以它不再是 {0,1,0}。有人可以帮助我确定我的眼部矩阵中的"向上"矢量应该是多少吗?我想保持x轴与地平线平行。

我正在使用Mathematica,但我打算用Python实现...

下面是在 {5,0,10} 处使用眼睛的代码,但我想将眼睛更改为 {5,5,10},并找出正确的"向上"向量


   `eye = {5, 5, 10};
   l = {0, 0, 0};
   Mt = IdentityMatrix[4];
   F = l - eye;
   Mt[[1 ;; 3, 4]] = -eye;
   >>>Mt={{1, 0, 0, -5}, {0, 1, 0, 0}, {0, 0, 1, -10}, {0, 0, 0, 1}}
   forward = Normalize[F];
   up = Normalize[{0, 1, 0}];
   left = Cross[up, forward];
   Mr = IdentityMatrix[4];
   Mr[[1, 1 ;; 3]] = left;
   Mr[[2, 1 ;; 3]] = up;
   Mr[[3, 1 ;; 3]] = forward;
   >>> Mr={{-0.894427, 0., 0.447214, 0.}, {0., 1., 0., 0.}, {-0.447214, 
  0., -0.894427, 0.}, {0., 0., 0., 1.}}
   >>>Mr.Mt={{-0.894427, 0., 0.447214, 0.}, {0., 1., 0., 0.},    {-0.447214, 
  0., -0.894427, 11.1803}, {0., 0., 0., 1.}}`

您需要重新正交上向量:

up = Cross[forward, left];

相关内容

  • 没有找到相关文章

最新更新