【问题标题】:get direction vector from btScalar matrix从 btScalar 矩阵获取方向向量
【发布时间】:2013-11-18 11:43:39
【问题描述】:

我已经创建了一个以复合体作为底盘的子弹车,复合体由两个车身组成,一个底盘和一个炮塔。

我可以像这样得到炮塔变换和opengl矩阵:

// get chassis and turret transforms
btTransform chassisTransform = m_vehicle->getChassisWorldTransform();
btTransform turretTransform = compound->getChildTransform(1);
// multiply transforms to get updated turret transform
turretTransform *= chassisTransform;

// get turret matrix
btScalar turretMatrix[16];
turretTransform.getOpenGLMatrix(turretMatrix);

我正在尝试从此矩阵中获取炮塔前向/方向向量。我需要这个,以便将相机固定到炮塔的位置和方向。

我试过的是这样的:

btVector3 turretForwardVector = btVector3(turretMatrix[2], turretMatrix[6], turretMatrix[9]);

但这并没有给我正确的向量。

我必须在这个矩阵中的哪里寻找向量?

【问题讨论】:

  • 我设法找到了这个link。它解释了我会在矩阵中找到方向向量的位置(第 3 列)。所以我得到了第 8、第 9 和第 10 个矩阵元素,并从中创建了 turretForwardMatrix:btVector3 turretForwardVector = btVector3(turretMatrix[8], turretMatrix[9], turretMatrix[10]);

标签: c++ opengl vector matrix bullet


【解决方案1】:

你的想法是对的。仅提取行或列向量就足够了。现在,在 OpenGL 矩阵表示法中,您正在提取 Z 行。我建议你试试这个专栏,即turretMatrix[0x8 … 0xb]

【讨论】:

  • 是的,我发现第 8、第 9 和第 10 个矩阵元素包含我需要的信息!谢谢
猜你喜欢
  • 1970-01-01
  • 2014-12-29
  • 1970-01-01
  • 2021-07-17
  • 2021-03-20
  • 2023-03-17
  • 2017-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多