Make geom::gram_schmidt return false instead of normalizing a zero vector
This commit is contained in:
parent
4e5ed4edad
commit
8688b84982
1 changed files with 10 additions and 5 deletions
|
|
@ -5,17 +5,22 @@
|
||||||
namespace psemek::geom
|
namespace psemek::geom
|
||||||
{
|
{
|
||||||
|
|
||||||
inline void gram_schmidt()
|
inline bool gram_schmidt()
|
||||||
{}
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
template <typename V1, typename ... Vs>
|
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), ...);
|
((vs -= dot(v1, vs) * v1), ...);
|
||||||
|
|
||||||
gram_schmidt(vs...);
|
return gram_schmidt(vs...);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue