Йэххххххх захотелось тут мне тряхнуть стариной и решил я снова покодить на старом добром C++. И кодить я стал не абы что а обратился к мечте детства - разработке игр. Разумеется всё решил писать с нуля. Ибо делается это для удовольствия а не для профита. И начал я с класса вектора:
#ifndef __VECTOR4D_H__
#define __VECTOR4D_H__
#include "core.h"
class CVector4D
{
/**
* Vector components.
*/
float x , y , z , w;
public:
/**
* Default constructor.
*/
CVector4D( void );
/**
* Set components constructor.
*/
CVector4D( float x , float y , float z , float w );
/**
* Copy constructor.
*/
CVector4D( const CVector4D & Vector );
/**
* Assign operator.
*/
CVector4D operator=( const CVector4D & Vector );
/**
* Add operator.
*/
CVector4D operator+( const CVector4D & Vector );
/**
* Assignable addition operator.
*/
CVector4D operator+=( const CVector4D & Vector );
/**
* Sub operator.
*/
CVector4D operator-( const CVector4D & Vector );
/**
* Assignable sub operator.
*/
CVector4D operator-=( const CVector4D & Vector );
/**
* Scale operator.
*/
CVector4D operator*( const float Scale );
/**
* Get x component.
*/
float GetX( void ) const;
/**
* Get y component.
*/
float GetY( void ) const;
/**
* Get z component.
*/
float GetZ( void ) const;
/**
* Get w component.
*/
float GetW( void ) const;
/**
* Set x component.
*/
void SetX( float x );
/**
* Set y component.
*/
void SetY( float y );
/**
* Set z component.
*/
void SetZ( float z );
/**
* Set w component.
*/
void SetW( float w );
/**
* Vector dot product.
*/
float dot( const CVector4D & Vector );
/**
* Vector cross product.
*/
CVector4D cross( const CVector4D & Vector );
};
#endif
Вот такой вот класс получился.