#include "vector3D.h"
#include <math.h>

vector3D::vector3D(float a, float b, float c)
{
	vector[0] = a;
	vector[1] = b;
	vector[2] = c;
}
vector3D::vector3D()
{
}
vector3D vector3D::operator+(vector3D p2)
{
	vector3D temp(vector[0]+p2[0],vector[1]+p2[1],vector[2]+p2[2]);
	return temp;
}
vector3D vector3D::operator-(vector3D p2)
{
	vector3D temp(vector[0]-p2[0],vector[1]-p2[1],vector[2]-p2[2]);
	return temp;
}
vector3D vector3D::operator*(float s)
{
	vector3D temp;
	temp.setValues(vector[0]*s,vector[1]*s, vector[2]*s);
	return (temp);
}
vector3D vector3D::operator/(float s)
{
	vector3D temp(vector[0],vector[1],vector[2]);
	// Initialize value of temp to vector.
	// If divide by zero error, return unchanged vector. 
	if( s != 0)
	{
		temp.setValues(vector[0]/s,vector[1]/s, vector[2]/s);
		return (temp);
	}
	return temp;
}
float vector3D::operator [] (int pos)
{
	// TODO: Find out how to differentiate between:
	// x[0] = 4;
	// and float y = x[0];
	return (vector[pos]);
}
void vector3D::setValues(float a, float b, float c)
{
	vector[0] = a;
	vector[1] = b;
	vector[2] = c;
}
float vector3D::length()
{
	float length = sqrt(vector[0]*vector[0] + vector[1]*vector[1] + vector[2]*vector[2]);
	return (length);
}
vector3D vector3D::normalize()
{
	float len = length();
	if(len == 0)
	{
		vector3D temp(0,0,0);
		return temp;
	}
	vector3D temp(vector[0]/len,vector[1]/len,vector[2]/len);
	return temp;
}

