#include "Position.hpp" #include /* by number Addition Multiplication Division Subtraction matrix specific lenght dot product cross product triple product projection */ class Vector { public: Position XYZ; //By number Vector(float fX,float fY,float FZ); void Multiplication(float fTimesBy); void Division(float fA); //Matrix specific void Addition(Vector B); void Subtraction(Vector B); float Lenght(); float DotProduct(Vector B); Vector CrossProduct(Vector B); float TripleProduct(Vector B, Vector C); Vector Projection(); }; Vector::Vector(float fX,float fY,float fZ) { XYZ.SetPos(fX,fY,fZ); } void Vector::Multiplication(float fTimesBy) { XYZ.SetX(XYZ.X() * fTimesBy); XYZ.SetY(XYZ.Y() * fTimesBy); XYZ.SetY(XYZ.Z() * fTimesBy); } void Vector::Division(float fA) { XYZ.SetX(XYZ.X() / fA); XYZ.SetY(XYZ.Y() / fA); XYZ.SetZ(XYZ.Z() / fA); } void Vector::Addition(Vector B) { XYZ.SetX(XYZ.X() + B.XYZ.X()); XYZ.SetY(XYZ.Y() + B.XYZ.Y()); XYZ.SetZ(XYZ.Z() + B.XYZ.Z()); } void Vector::Subtraction(Vector B) { XYZ.SetX(XYZ.X() - B.XYZ.X()); XYZ.SetY(XYZ.Y() - B.XYZ.Y()); XYZ.SetZ(XYZ.Z() - B.XYZ.Z()); } float Vector::Lenght() { return sqrt((XYZ.X()*XYZ.X()) + (XYZ.Y()*XYZ.Y()) + (XYZ.Z()*XYZ.Z())); } float Vector::DotProduct(Vector B) { return (XYZ.X() * B.XYZ.X()) + (XYZ.Y() * B.XYZ.Y()) + (XYZ.Z() * B.XYZ.Z()); } Vector Vector::CrossProduct(Vector B) { Vector Product ( (XYZ.Y() * B.XYZ.Z()) - (XYZ.Z() * XYZ.Y()), (XYZ.X() * B.XYZ.Z()) - (XYZ.Z() * XYZ.X()), (XYZ.X() * B.XYZ.Y()) - (XYZ.Y() * XYZ.X()) ); return Product; } float TripleProduct(Vector B, Vector C) { return C.DotProduct( CrossProduct(B) ); }