All pastes #915915 Raw Edit

Something

public text v1 · immutable
#915915 ·published 2008-02-24 04:48 UTC
rendered paste body
#include <vector>
#include <math.h>
#include <windows.h>

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<sbVector> 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;
}