我使用glm
库在C++中创建碰撞检测系统。glm :: vec3 precision C++
我有定义为std::vector<glm::vec3> vertices
顶点的阵列,并且以计算maxX的,Y的函数,Z定义为
GLfloat AssetInstance::maxX()
{
GLfloat max = vertices.at(0).x;
for(glm::vec3 vertex : vertices)
if(vertex.x > max) max = vertex.x;
return max;
}
但如果我运行下面的代码:
std::vector<glm::vec3> testVector;
testVector.push_back(glm::vec3(3.0500346, 1.0, 1.0));
testVector.push_back(glm::vec3(3.0500344, 2.0, 2.0));
testVector.push_back(glm::vec3(3.0500343, 3.0, 3.0));
std::cout << maxX(testVector) << std::endl;
输出是3.05003
我以为glm::vec3
是double
和double
比那更精确? 有没有更好的方法来做到这一点?我的maxX没有返回足够精确的结果。