|
|
|
@ -97,16 +97,22 @@ namespace glm |
|
|
|
|
GLM_FUNC_QUALIFIER bool isOrthogonal(mat<C, R, T, Q> const& m, T const& epsilon) |
|
|
|
|
{ |
|
|
|
|
bool result = true; |
|
|
|
|
for(length_t i(0); result && i < m.length() - 1; ++i) |
|
|
|
|
for(length_t j(i + 1); result && j < m.length(); ++j) |
|
|
|
|
result = areOrthonormal(m[i], m[j], epsilon); |
|
|
|
|
for(length_t i(0); result && i < m.length(); ++i) |
|
|
|
|
{ |
|
|
|
|
result = isNormalized(m[i], epsilon); |
|
|
|
|
for(length_t j(i + 1); result && j < m.length(); ++j) |
|
|
|
|
result = abs(dot(m[i], m[j])) <= epsilon; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if(result) |
|
|
|
|
{ |
|
|
|
|
mat<C, R, T, Q> tmp = transpose(m); |
|
|
|
|
for(length_t i(0); result && i < m.length() - 1 ; ++i) |
|
|
|
|
for(length_t j(i + 1); result && j < m.length(); ++j) |
|
|
|
|
result = areOrthonormal(tmp[i], tmp[j], epsilon); |
|
|
|
|
for(length_t i(0); result && i < m.length(); ++i) |
|
|
|
|
{ |
|
|
|
|
result = isNormalized(tmp[i], epsilon); |
|
|
|
|
for(length_t j(i + 1); result && j < m.length(); ++j) |
|
|
|
|
result = abs(dot(tmp[i], tmp[j])) <= epsilon; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return result; |
|
|
|
|
} |
|
|
|
|