我想检查 aglm::vec3是否等于零向量glm::vec3(0,0,0)。
直到现在我在写
if(v == glm::vec3(0,0,0))
...
Run Code Online (Sandbox Code Playgroud)
但后来我了解了 epsilon,所以我的问题是,是否有一种更快(更具可读性)的方法来进行此检查,而不是像这样进行显式比较:
if(abs(v.x) < EPSILON && abs(v.y) < EPSILON && abs(v.z) < EPSILON)
...
Run Code Online (Sandbox Code Playgroud)
一种更具可读性(也许更快)的方法可能是使用 glms 向量比较方法:
if (glm::all(glm::lessThan(glm::abs(v), glm::vec3(EPSILON)))) ...
Run Code Online (Sandbox Code Playgroud)
或者可以比较向量的长度(或平方长度,因为这不需要平方根计算)而不是元素:
if (glm::length2(v) < EPSILON * EPSILON) ...
Run Code Online (Sandbox Code Playgroud)