Make geom::gram_schmidt return false instead of normalizing a zero vector

This commit is contained in:
Nikita Lisitsa 2022-11-20 01:39:05 +03:00
parent 4e5ed4edad
commit 8688b84982

View file

@ -5,17 +5,22 @@
namespace psemek::geom
{
inline void gram_schmidt()
{}
inline bool gram_schmidt()
{
return true;
}
template <typename V1, typename ... Vs>
void gram_schmidt(V1 & v1, Vs & ... vs)
bool gram_schmidt(V1 & v1, Vs & ... vs)
{
v1 = normalized(v1);
if (auto l = length(v1); l != 0)
v1 /= l;
else
return false;
((vs -= dot(v1, vs) * v1), ...);
gram_schmidt(vs...);
return gram_schmidt(vs...);
}
}