我想检查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)
...
答案 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) ...