/////////////////// VECTOR.H ///////////////////////
#ifndef __VECTOR_H
#define __VECTOR_H
class VECTOR
{
public:
VECTOR();
VECTOR( float _x, float _y, float _z );
VECTOR( VECTOR &v );
~VECTOR();
float Magnitude();
float Dot( VECTOR &v );
VECTOR Cross( VECTOR &v );
void Normalize();
void SetX( float _x );
void SetY( float _y );
void SetZ( float _z );
void SetVector( VECTOR &v );
void SetVector( float _x, float _y, float _z );
float GetX();
float GetY();
float GetZ();
VECTOR GetVector();
int operator == ( VECTOR &v );
VECTOR operator = ( VECTOR &v );
VECTOR operator + ( VECTOR &v );
VECTOR operator - ( VECTOR &v );
VECTOR operator * ( VECTOR &v );
VECTOR operator / ( VECTOR &v );
protected:
float x, y, z;
};
#endif
////////////////////////// VECTOR.H END ////////////////////////
////////////////////////////////////////////////////////////////
////////////////////////// VECTOR.CPP //////////////////////////
#include <math.h>
#include "vector.h"
VECTOR::VECTOR()
{
x = 0.0;
y = 0.0;
z = 0.0;
}
VECTOR::VECTOR( float _x, float _y, float _z )
{
x = _x;
y = _y;
z = _z;
}
VECTOR::VECTOR( VECTOR &v )
{
SetVector(v.x, v.y, v.z);
}
VECTOR::~VECTOR()
{
}
float VECTOR::Magnitude()
{
return (float) sqrt( x*x + y*y + z*z );
}
float VECTOR::Dot( VECTOR &v )
{
return (x*x + y*y + z*z);
}
VECTOR VECTOR::Cross( VECTOR &v )
{
return VECTOR(x*v.z-z*v.y, z*v.x-x*v.z, x*v.y-y*v.x);
}
void VECTOR::Normalize()
{
float length = 1/Magnitude();
x *= length;
y *= length;
z *= length;
}
void VECTOR::SetX( float _x )
{
x = _x;
}
void VECTOR::SetY( float _y )
{
y = _y;
}
void VECTOR::SetZ( float _z )
{
z = _z;
}
void VECTOR::SetVector( VECTOR &v )
{
SetVector(v.x, v.y, v.z);
}
void VECTOR::SetVector( float _x, float _y, float _z)
{
x = _x;
y = _y;
z = _z;
}
float VECTOR::GetX()
{
return x;
}
float VECTOR::GetY()
{
return y;
}
float VECTOR::GetZ()
{
return z;
}
VECTOR VECTOR::GetVector()
{
return *this;
}
VECTOR VECTOR::operator = ( VECTOR &v )
{
SetVector( v );
return *this;
}
int VECTOR::operator == ( VECTOR &v )
{
// FIX: Normalize both vectors first!! SLOW!!!!
return (x == v.x && y == v.y && z == v.z);
}
VECTOR VECTOR::operator + ( VECTOR &v )
{
return VECTOR(x+v.x, y+v.y, z+v.z);
}
VECTOR VECTOR::operator - ( VECTOR &v )
{
return VECTOR(x-v.x, y-v.y, z-v.z);
}
VECTOR VECTOR::operator * ( VECTOR &v )
{
return VECTOR(x*v.x, y*v.y, z*v.z);
}
VECTOR VECTOR::operator / ( VECTOR &v )
{
return VECTOR(x/v.x, y/v.y, z/v.z);
}
////////////////////////// VECTOR.CPP END ///////////////////////
That''s all of it. If you know how to deal with C++ please help me out here.
Thank you!
----------------------------------------------
That's just my 200 bucks' worth!
..-=gLaDiAtOr=-..