您的位置:首页 > 其它

初始速度

2016-08-06 09:48 260 查看
//
// vector.h
//
// Vector structure and its operations for 3-d space vectors.
//
// Written by: Yanting Wang           12/25/2002
//

#include <iostream>
using namespace std;

#include <math.h>

#ifndef __VECTOR__H
#define __VECTOR__H

struct Vector
{
double x, y, z;

Vector() : x(0.0), y(0.0), z(0.0) {}
Vector( double x, double y, double z ) : x(x), y(y), z(z) {}

void set( double xx, double yy, double zz ) { x = xx; y = yy; z = zz; }

void clear() { x = 0.0;   y = 0.0;   z = 0.0; }

// square length of a vector
double r2() const { return x*x + y*y + z*z; }

// length of a vector
double r() const { return sqrt( r2() ); }

// the unit vector
Vector normal() const
{
double r = sqrt( x*x + y*y + z*z );
return Vector( x/r, y/r, z/r );
}

const Vector &operator = ( const Vector &v )
{
x = v.x;   y = v.y;   z = v.z;
return v;
}

const Vector &operator += ( const Vector &v )
{
x += v.x;   y += v.y;   z += v.z;
return *this;
}

const Vector &operator -= ( const Vector &v )
{
x -= v.x;   y -= v.y;   z -= v.z;
return *this;
}

const Vector &operator *= ( double d )
{
x *= d;   y *= d;   z *= d;
return *this;
}

const Vector &operator /= ( double d )
{
x /= d;   y /= d;   z /= d;
return *this;
}
};

Vector operator+( const Vector &v1, const Vector &v2 )
{
return Vector( v1.x + v2.x, v1.y + v2.y, v1.z + v2.z );
}

Vector operator-( const Vector &v1, const Vector &v2 )
{
return Vector( v1.x - v2.x, v1.y - v2.y, v1.z - v2.z );
}

Vector operator-( const Vector &v1 )
{
return Vector( -v1.x, -v1.y, -v1.z );
}

Vector operator*( const Vector &v, const double d )
{
return Vector( v.x*d, v.y*d, v.z*d );
}

Vector operator*( const double d, const Vector &v )
{
return Vector( v.x*d, v.y*d, v.z*d );
}

//scalar product
double operator*( const Vector &v1, const Vector &v2 )
{
return v1.x*v2.x + v1.y*v2.y + v1.z*v2.z;
}

//vector product
Vector operator^( const Vector &v1, const Vector &v2 )
{
return Vector( v1.y*v2.z - v1.z*v2.y,
v1.z*v2.x - v1.x*v2.z,
v1.x*v2.y - v1.y*v2.x );
}

Vector operator/( const Vector &v, const double d )
{
return Vector( v.x/d, v.y/d, v.z/d );
}

ostream &operator<<( ostream &output, const Vector &p )
{
output << p.x << " " << p.y << " " << p.z;
return output;
}

istream &operator>>( istream &input, Vector &p )
{
input >> p.x >> p.y >> p.z;
return input;
}

#endif //__VECTOR__H
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: