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
|
||||
{
|
||||
|
||||
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...);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue