#include #include #include class sbVector { public: float x,y,z; sbVector(); ~sbVector(); explicit sbVector(float x, float y, float z); sbVector operator-(void); sbVector operator*( const float a ); sbVector operator*( const sbVector &a ); sbVector operator+( const sbVector &a ); sbVector operator-( const sbVector &a ); sbVector operator/( const float a ); sbVector operator/( const sbVector &a ); sbVector operator*( const int a ); sbVector operator/( const int a ); sbVector &operator*=( const float a ); sbVector &operator*=( const sbVector &a ); sbVector &operator+=( const sbVector &a ); sbVector &operator-=( const sbVector &a ); sbVector &operator/=( const float a ); sbVector &operator/=( const sbVector &a ); bool operator==( const sbVector &b ) const ; bool operator!=( const sbVector &b ) const ; void operator=( const sbVector &b ); sbVector normalize( void ); float length( void ) const; sbVector cross( sbVector &v ) const; float dot( sbVector &v ) const; }; class sbFace { /** A Face **/ public: sbFace(); ~sbFace(); std::vector vertex; /* Tirnangle Coordinates */ }; sbFace::sbFace() {} sbFace::~sbFace() {} sbVector::~sbVector() {} sbVector::sbVector( void ){ this->x = 0; this->y = 0; this->z = 0; } sbVector sbVector::normalize( void ) { return -(*this / length());} sbVector sbVector::operator-(void) { return sbVector(-x, -y, -z);} float sbVector::length( void ) const { return sqrt(x*x + y*y + z*z);} sbVector sbVector::cross( sbVector &v ) const { return sbVector(y * v.z - v.y * z, z * v.x - v.z * x, x * v.y - v.x * y);} sbVector sbVector::operator*( const float a ) { return sbVector(a * x, a * y, a * z);} sbVector sbVector::operator*( const sbVector &a ) { return sbVector(x * a.x, y * a.y, z * a.z);} sbVector sbVector::operator+( const sbVector &a ) { return sbVector(x + a.x, y + a.y, z + a.z);} sbVector sbVector::operator-( const sbVector &a ) { return sbVector(x - a.x, y - a.y, z - a.z);} sbVector sbVector::operator/( const float a ) { return sbVector(x/a, y/a, z/a);} sbVector sbVector::operator/( const sbVector &a ) { return sbVector(x/a.x, y/a.y, z/a.z);} sbVector sbVector::operator*( const int a ) { return *this * ((float)a);} sbVector sbVector::operator/( const int a ) { return *this / ((float)a);} sbVector &sbVector::operator/=( const sbVector &a ) { x /= a.x; y /= a.y; z /= a.z; return *this; } sbVector &sbVector::operator*=( const float a ) { x *= a; y *= a; z *= a; return *this; } sbVector &sbVector::operator+=( const sbVector &a ) { x += a.x; y += a.y; z += a.z; return *this; } sbVector &sbVector::operator-=( const sbVector &a ) { x -= a.x; y -= a.y; z -= a.z; return *this; } sbVector &sbVector::operator/=( const float a ) { x = x/a; y = y/a; z = z/a; return *this; } sbVector::sbVector(float x, float y, float z){ this->x = x; this->y = y; this->z = z; } float sbVector::dot( sbVector &v ) const { return (float)((x * v.x) + (y * v.y) + (z * v.z)); } bool sbVector::operator!=( const sbVector &b) const { return !(*this == b); } bool sbVector::operator==( const sbVector &b) const { if (x == b.x && y == b.y && z == b.z) return true; /** they are the same **/ return false; /** they are not the same **/ } void sbVector::operator=( const sbVector &b) { x = b.x; y = b.y; z = b.z; } int main(void) { sbFace face; MessageBox(0,"before push_back","",0); face.vertex.push_back(sbVector::sbVector(10, 50, 70)); char asd[66]; sprintf((char*)&asd, "%f,%f,%f", face.vertex.at(0)); MessageBox(0,"after push_back",asd,0); return 0; }