C++ 向量在轴上的投影

C++ 向量在轴上的投影,c++,matrix,graphics,collision-detection,C++,Matrix,Graphics,Collision Detection,我正在尝试使用标准轴定理实现碰撞检测系统,根据我的理解,我需要构造一个垂直于模型每条边的轴。然后我从另一个模型中获取每个顶点,并将其投影到轴上。我找到了几种不同的方法,但不确定哪一种是正确的。目前我的做法是: glm::vec2 AssetInstance::project(glm::vec3 axis) { GLfloat min = glm::dot(axis, vertices[0]); GLfloat max = min; for(int i = 1; i &l

我正在尝试使用标准轴定理实现碰撞检测系统,根据我的理解,我需要构造一个垂直于模型每条边的轴。然后我从另一个模型中获取每个顶点,并将其投影到轴上。我找到了几种不同的方法,但不确定哪一种是正确的。目前我的做法是:

glm::vec2 AssetInstance::project(glm::vec3 axis)
{
    GLfloat min = glm::dot(axis, vertices[0]);
    GLfloat max = min;

    for(int i = 1; i < vertices.size(); i++)
    {
        GLfloat temp = glm::dot(axis, vertices[i]);
        if(temp < min) min = temp;
        else if(temp > max) max = temp;
    }
    //std::cout << min << " " << max << std::endl;
    return glm::vec2(min, max);
}
glm::vec2 AssetInstance::project(glm::vec3轴)
{
GLfloat min=glm::点(轴,顶点[0]);
GLfloat max=min;
对于(int i=1;i最大值)最大值=温度;
}

//有三件事:第一,在没有提供更多细节的情况下,很难为一个复杂代码的代码截取提供答案。为了增加你得到另一个人的解决方案的机会,我建议提供一个可复制的例子。第二,由于代码无法复制,一旦你无法理解你不是说“他们相距很远”吗第三,如果你能发布你的结果也会有帮助。这似乎是一个有趣的问题。两个问题。你说
垂直于每一条边的轴
。垂直于一条边的向量数量是无限的,你是指每一个面吗?碰撞的条件是什么,两个模型的最小-最大值沿着一条直线重叠n轴?