Implement Normalized, LinearCombination, and operator<< on Vector4s

This commit is contained in:
Eryn Wells 2014-08-09 11:55:10 -07:00
parent 9645a09a6c
commit c49457a817
2 changed files with 47 additions and 1 deletions

View file

@ -224,6 +224,42 @@ operator*(const Double& lhs,
return rhs * lhs;
}
/*
* charles::basics::Normalized --
*/
Vector4
Normalized(const Vector4& v)
{
return Vector4(v).Normalize();
}
/*
* charles::basics::LinearCombination --
*/
Vector4
LinearCombination(const Double k1, const Vector4& v1,
const Double k2, const Vector4& v2,
const Double k3, const Vector4& v3)
{
return Vector4(k1 * v1.X() + k2 * v2.X() + k3 * v3.X(),
k1 * v1.Y() + k2 * v2.Y() + k3 * v3.Y(),
k1 * v1.Z() + k2 * v2.Z() + k3 * v3.Z());
}
/*
* charles::basics::operator<< --
*/
std::ostream &
operator<<(std::ostream &os, const Vector3 &v)
{
// Stream the vector like this: <x, y, z>
os << "<" << v.X() << ", " << v.Y() << ", " << v.Z() << ">";
return os;
}
} /* namespace basics */
} /* namespace charles */

View file

@ -6,6 +6,8 @@
#ifndef __BASICS_VECTOR_HH__
#define __BASICS_VECTOR_HH__
#include <ostream>
#include "basics/matrix.hh"
#include "basics/types.hh"
@ -63,7 +65,15 @@ Vector4 operator*(const Double& lhs, const Vector4& rhs);
/** Normalize the given vector and return a copy of it. */
Vector4& Normalized(const Vector4& v);
Vector4 Normalized(const Vector4& v);
Vector4 LinearCombination(const Double k1, const Vector4& v1,
const Double k2, const Vector4& v2,
const Double k3, const Vector4& v3);
std::ostream& operator<<(std::ostream& ost, const Vector4& v);
} /* namespace basics */
} /* namespace charles */