gpt4 book ai didi

math - 帮助构建 OBB,尝试用 3 个向量表示矩阵

转载 作者:行者123 更新时间:2023-12-04 07:04:40 25 4
gpt4 key购买 nike

我目前正在尝试构建一个 OBB (Oriented Bounding Box)使用“实时碰撞检测”一书中包含的源代码和数学。

本书中包含的代码的一个问题是,它几乎没有解释参数对方法的含义。

我想弄清楚我需要什么来提供我的 setOBB() 方法(我写了这个)。它是这样的:

void PhysicalObject::setOBB( Ogre::Vector3 centrePoint, Ogre::Vector3 localAxes[3], Ogre::Vector3 positiveHalfwidthExtents )
{
// Ogre::Vector3 c; // OBB center point
// Ogre::Vector3 u[3]; // Local x-, y-, and z-axes (rotation matrix)
// Ogre::Vector3 e; // Positive halfwidth extents of OBB along each axis

m_obb.c = centrePoint;
m_obb.u[0] = localAxes[0];
m_obb.u[1] = localAxes[1];
m_obb.u[2] = localAxes[2];
m_obb.e = positiveHalfwidthExtents;
}

看上面它要的参数,第一个和第三个参数我相信我明白了。
  • 传入物体的中心位置。
  • 这是我的问题。 我相信它想要一个使用 3 个向量数组表示的矩阵? 但是怎么样?
  • 一个向量,其中包含每个 x、y、z 方向上 OBB 的中心点和边缘之间的距离的大小。

  • 这是我目前正在做的事情:
    // Build the OBB
    Ogre::Vector3 rotation[3];
    Ogre::Vector3 centrePoint = sphere->getPosition();
    rotation[0] = ?
    rotation[1] = ?
    rotation[2] = ?
    Ogre::Vector3 halfEdgeLengths = Ogre::Vector3( 1,1,1 );

    myObject->setOBB( centrepoint, rotation, halfEdgeLengths );

    如何使用三个向量表示矩阵(我无法避免这样做)。谢谢。

    最佳答案

    表示 3d 空间中的旋转/缩放的 3x3 矩阵只不过是一行中的三个向量。
    每个列向量是旋转和缩放的主轴。第一列是缩放和旋转的 x 轴,第二和第三列是 y 和 z。
    (食人魔使用列主矩阵)

    所以,localAxes[3]简直就是轮换。你可以从四元数中得到它。

    Ogre::Vector3 rotation[3];
    Ogre::Quaternion orientation = sphere->getOrientation();
    orientation.ToAxes(rotation);
    // Now rotation has the three axes representing the orientation of the sphere.

    关于math - 帮助构建 OBB,尝试用 3 个向量表示矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1300425/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com