rendered paste body#include "Position.hpp"
#include <math.h>
/*
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) );
}