#include "vector.h"

vector::vector(double x, double y, double z) {
 this->x = x;
 this->y = y;
 this->z = z;
}

vector vector::operator+(vector foo) {
 return vector(x + foo.x, y + foo.y, z + foo.z);
}

vector vector::operator-(vector foo) {
 return vector(x - foo.x, y - foo.y, z - foo.z);
}

vector vector::operator*(double foo) {
 return vector(x*foo, y*foo, z*foo);
}

vector operator*(double foo, vector bar) {
 return vector(bar.x * foo, bar.y * foo, bar.z * foo);
}

vector vector::operator=(double foo) {
 x=foo;
 y=foo;
 z=foo;
 return *this;
}

double vector::length(void) {
  return sqrt(length_squared());
}

double vector::length_squared(void) {
  return x*x + y*y + z*z;
}

vector vector::normalized(void) {
  double length;
  length = this->length();
  if (length != 0) 
    return (*this)*(1/length);
  else
    return (*this);
}


