可以乘以旋转矩阵来旋转方向矢量(vec 3)吗?

时间:2019-02-21 06:03:42

标签: c++ opengl collision-detection glm-math

我采用“分离轴定理(SAT)”来实现“ OBB碰撞检测”。 如下所示,SAT需要三个要素。

  1. 中点的坐标(x,y,z)
  2. 每个轴的长度
  3. 每个轴的方向矢量

    here

// Initialized
SATOBB::SATOBB(glm::vec3 &pos, std::vector<glm::vec3> &dir, glm::vec3 &len)
{
    i_Pos = pos;
    i_Dir = dir;
    i_Len = len;
    m_Dir.push_back(glm::vec3(0,0,0)); // Yeah... I know this strange code.. Thanks for tkausel
}

// i_... is before change, m_... is after change

void SATOBB::update(
glm::mat4 &Rotate, 
glm::mat4 &Trans, 
glm::mat4 &Scale
)
{
    glm::vec3 m_Pos = Trans  * glm::vec4(i_Pos, 1.0f);
    for (int i=0; i<i_Dir.size(); i++){
        glm::vec3 m_Dir = Rotate * glm::vec4(i_Dir, 1.0f);
    }
    glm::vec3 m_Len = Scale  * glm::vec4(i_Len, 1.0f);  
}

我认为用于计算“ 3”的代码。是错的。 所以,请让我知道正确的计算代码。

为了进行计算,我想使用mat4函数,因此vec3用于“ 1.&2 ..”(出于方便起见)

“ 3。”是使用vec3计算的。 将向量乘以旋转矩阵真的足够吗? 那是问题。

0 个答案:

没有答案