well this is what I have so far, just my implementation file
Code:
#include "Vector.h"
#include "Main.h"
//DEFAULT CONSTRUCTOR
Vector3D::Vector3D() { x = 0; y = 0; z = 0; }
//CREATES A NEW VECTOR WITH THE NEW X,Y,Z VALUES PASSED IN
Vector3D::Vector3D(float x1, float y1, float z1): x(x1), y(y1), z(z1){}
Vector3D Vector3D::operator+(Vector3D v) {
Vector3D temp;
temp.x = x + v.x;
temp.y = y + v.y;
temp.z = z + v.z;
return temp;
}
Vector3D Vector3D::operator-(Vector3D v) {
Vector3D temp;
temp.x = x - v.x;
temp.y = y - v.y;
temp.z = z - v.z;
return temp;
}
//DIVIDE THE COMPONENTS OF THE CALLING VECTOR BY THE SCALAR
Vector3D Vector3D::operator/(float scalar) {
return Vector3D(x / scalar, y / scalar, z / scalar);
}
//MULTIPLY EACH VECTOR COMPONENT BY SCALAR AND RETURN NEW VECTOR
Vector3D Vector3D::operator*(float scalar) {
return Vector3D(x * scalar, y * scalar, z * scalar);
}
//FIND THE CROSS PRODUCT BETWEEN TWO VECTORS
Vector3D Vector3D::CrossProduct(Vector3D v, Vector3D v1) {
return Vector3D( (v.y * v1.z) - (v.z - v1.y), (v.x * v1.z) - (v.z * v1.x), (v.x * v1.y) - (v.y - v1.x) );
}
float Vector3D::Magnitude(Vector3D v) {
return sqrt( (v.x * v.x) + (v.y * v.y) + (v.z * v.z) );
}
void Vector3D::Normalize(Vector3D v) {
if(v.magnitude == 1) //IF IT'S ALREADY NORMALIZE WE GET THE HELL OUTTA HERE!
return;
else{
float magnitude = v.Magnitude(v); //MAKE SURE YOU HAVE THE PROPER CURRENT MAGNITUDE
v.magnitude = magnitude / magnitude;
}
}
//MULTIPLY COMPONENTS AND ADD, RETURNS THE NUMBER OF DEGREES BETWEEN TWO VECTORS
float Vector3D::DotProduct(Vector3D v, Vector3D v1) {
return float(v.x * v1.x + v.y * v1.y + v.z * v1.z);
}