portfolio/cpp/fumee/vector.h

100 lines
2.3 KiB
C++
Executable File

///////////////////////////////////////////////////////////////////////////////
//
// vector.cpp
//
// Description
// Classe définissant un vecteur.
//
// Copyright
// Laboratoire LSIS
// Equipe LXAO
//
// Historique
// 12/05/1999 Création par Sébastien Thon
// 03/10/2015 Modification Thierry Nibert-siber
//
///////////////////////////////////////////////////////////////////////////////
#ifndef VECTOR_H
#define VECTOR_H
#include <iostream>
class Vector
{
public:
/*Vector( double x1=0, double y1=0, double z1=0 );
Vector( const Vector& v );*/
Vector():
x(0), y(0), z(0) {}
Vector (double x1, double y1, double z1):
x(x1), y(y1), z(z1) {}
Vector ( const Vector &v ):
x(v.x),
y(v.y),
z(v.z) {}
double distance( const Vector& v ) const;
double distance( double _x, double _y, double _z ) const;
double distance_squared( const Vector& v ) const;
double distance_squared( double _x, double _y, double _z ) const;
double operator % ( const Vector& v ) const; // produit scalaire
Vector operator ^ ( const Vector& v ) const; // produit vectoriel
void normalize();
Vector operator + ( const Vector& v ) const;
Vector operator + ( double d ) const;
Vector operator - ( const Vector& v ) const;
Vector operator - ( double d ) const;
Vector operator - () const;
Vector operator * ( const Vector& v ) const;
Vector operator * ( double d ) const;
Vector operator / ( const Vector& v ) const;
Vector operator / ( double d ) const;
int operator > ( const Vector& v );
int operator < ( const Vector& v );
int operator == ( const Vector& v );
int operator != ( const Vector& v );
Vector& operator = ( const Vector& v );
Vector& operator += ( const Vector& v );
Vector& operator -= ( const Vector& v );
Vector& operator += ( double d );
Vector& operator -= ( double d );
Vector& operator *= ( double d );
Vector& operator /= ( double d );
friend Vector operator + ( double d, const Vector& v )
{
return Vector( v.x+d, v.y+d, v.z+d );
}
friend Vector operator * ( double d, const Vector& v )
{
return Vector( v.x*d, v.y*d, v.z*d );
}
friend std::ostream& operator << ( std::ostream& os, const Vector& v )
{
return os << v.x << ", " << v.y << ", " << v.z;
}
double length() const;
double x, y, z;
};
#endif