glm :: vec3和epsilon比较

时间:2015-12-05 09:42:31

标签: opengl glm-math

我想检查glm::vec3是否等于零向量glm::vec3(0,0,0)

到现在为止我正在写

if(v == glm::vec3(0,0,0))
    ...

但后来我了解了epsilon,所以我的问题是,如果有更快(更易读)的方式来执行此检查,而不是像这样明确比较:

if(abs(v.x) < EPSILON && abs(v.y) < EPSILON && abs(v.z) < EPSILON)
    ...

2 个答案:

答案 0 :(得分:3)

你也可以使用glm&#39; s epsilon comparison functions:epsilonEqual。它们在glm / gtc / epsilon.hpp中声明

答案 1 :(得分:2)

更可读(也许更快)的方法可能是使用glms矢量比较方法:

if (glm::all(glm::lessThan(glm::abs(v), glm::vec3(EPSILON)))) ...

或者可以比较矢量的长度(或平方长度,因为这不需要平方根计算)而不是元素:

if (glm::length2(v) < EPSILON * EPSILON) ...