All pastes #898909 Raw Edit

Miscellany

public text v1 · immutable
·published 2008-02-10 18:58 UTC
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) );
}