From aca365136602415bdbdb09a75669b2720c988f17 Mon Sep 17 00:00:00 2001 From: josh Date: Sat, 17 Jan 2009 19:49:12 +0000 Subject: [PATCH] added normalize() to Vector, made Ray normalize its direction git-svn-id: svn://anubis/gvsu@369 45c1a28c-8058-47b2-ae61-ca45b979098e --- cs658/final/util/Ray.cc | 1 + cs658/final/util/Vector.cc | 11 +++++++++++ cs658/final/util/Vector.h | 1 + 3 files changed, 13 insertions(+) diff --git a/cs658/final/util/Ray.cc b/cs658/final/util/Ray.cc index 5a6ba72..1d48344 100644 --- a/cs658/final/util/Ray.cc +++ b/cs658/final/util/Ray.cc @@ -9,6 +9,7 @@ Ray::Ray(const Vector & origin, const Vector & direction) { m_origin = origin; m_direction = direction; + m_direction.normalize(); } /* diff --git a/cs658/final/util/Vector.cc b/cs658/final/util/Vector.cc index b81c283..b239769 100644 --- a/cs658/final/util/Vector.cc +++ b/cs658/final/util/Vector.cc @@ -1,6 +1,7 @@ #include "Vector.h" #include +#include Vector::Vector() { @@ -9,6 +10,16 @@ Vector::Vector() m_array[2] = 0.0; } +void Vector::normalize() +{ + double length = sqrt(m_array[0] * m_array[0] + + m_array[1] * m_array[1] + + m_array[2] * m_array[2]); + m_array[0] /= length; + m_array[1] /= length; + m_array[2] /= length; +} + std::ostream & operator<<(std::ostream & out, const Vector & v) { out << "[" << v[0] << ", " << v[1] << ", " << v[2] << "]"; diff --git a/cs658/final/util/Vector.h b/cs658/final/util/Vector.h index a54038d..885df4f 100644 --- a/cs658/final/util/Vector.h +++ b/cs658/final/util/Vector.h @@ -11,6 +11,7 @@ class Vector ~Vector(); double & operator[](int idx) { return m_array[idx]; } double operator[](int idx) const { return m_array[idx]; } + void normalize(); private: double m_array[3];