Commit ea5ae29b authored by paps's avatar paps

de même que pour vector3d.cpp

parent 8d4e821b
/***************************************************************************** #ifndef VECTEURS_H
* class LrVector3d (specification) * #define VECTEURS_H
* *
* author : Gilles Subrenat * #include <math.h>
* creation : Sunday, March 2 2008 (3/2/2008) *
* note : *
*****************************************************************************/ #define X 0;
#define Y 1;
#ifndef LRVECTOR3D_H #define Z 2;
#define LRVECTOR3D_H
class Vecteur
class LrPoint3d; {
private :
class LrVector3d float composantes[3];
{ float norme;
public:
//calculer la norme
// constants void calculNorme();
// *********
public :
static const LrVector3d ZERO;
static const LrVector3d I; // CONSTRUCTEURS ///////////////////////////////////////////////////////////////////////////
static const LrVector3d J;
static const LrVector3d K; //Constructeur par defaut
Vecteur ();
// constructors and destructor
// *************************** //constructeur par copie
Vecteur (const Vecteur &);
LrVector3d(); //Constructeur personnel
LrVector3d(const LrVector3d &source); Vecteur (float x, float y, float z);
LrVector3d(Real x, Real y, Real z); virtual ~Vecteur();
LrVector3d(const LrPoint3d &p1, const LrPoint3d &p2);
explicit LrVector3d(const LrPoint3d &p); // calcul de l'angle form� par 2 vecteurs
static float calculAngle(const Vecteur & v_1, const Vecteur & v_2);
virtual ~LrVector3d(); // ACCESSEURS //////////////////////////////////////////////////////////////////////////////
// assignement operator(s) //renvoie la norme du vecteur
// *********************** float getNorme() const;
//renvoie la valeur d'une composante du vecteur suivant le param int compo qui peut valoir X, Y ou Z
LrVector3d & operator = (const LrVector3d &source); float getCompo(int compo) const;
LrVector3d & operator += (const LrVector3d &source); //renvoie une copie de l'ensemble des composantes
LrVector3d & operator -= (const LrVector3d &source); float* getComposantes() const;
LrVector3d & operator *= (Real source);
LrVector3d & operator /= (Real source);
//modifier une composante du vecteur
// comparison operator(s) void setComposante(int compo, float valeur);
// ********************** //appliquer plusieur fois un vecteur au vecteur courant
void addXfois(const Vecteur & vs, float nbFois);
friend bool operator == (const LrVector3d &lhs, const LrVector3d &rhs);
friend bool operator != (const LrVector3d &lhs, const LrVector3d &rhs); // CALCUL SUR LES VECTEURS /////////////////////////////////////////////////////////////////
// unary and binary operator(s) //somme
// **************************** Vecteur somm(const Vecteur &) const;
//soustraction
friend LrVector3d operator + (const LrVector3d &rhs); Vecteur sous(const Vecteur &) const;
friend LrVector3d operator - (const LrVector3d &rhs); //produit vectoriel
Vecteur prodVectoriel(const Vecteur &) const;
friend LrVector3d operator + (const LrVector3d &lhs, //produit scalaire
const LrVector3d &rhs); Vecteur prodScalaire(const Vecteur &) const;
friend LrVector3d operator - (const LrVector3d &lhs, //multiplication par un scalaire
const LrVector3d &rhs); Vecteur multScalaire(float scalaire);
friend Real operator * (const LrVector3d &lhs, const LrVector3d &rhs);
friend LrVector3d operator * (Real lhs, const LrVector3d &rhs);
friend LrVector3d operator * (const LrVector3d &lhs, Real rhs);
friend LrVector3d operator / (const LrVector3d &lhs, Real rhs); //normaliser le vecteur
friend LrVector3d operator ^ (const LrVector3d &lhs, void normaliser();
const LrVector3d &rhs);
Vecteur & operator = (const Vecteur &);
// accessors Vecteur & operator += (const Vecteur & source);
// ********* Vecteur & operator -= (const Vecteur &);
Real getX() const;
void setX(Real x); friend Vecteur operator + (const Vecteur & v_1, const Vecteur & v_2);
friend Vecteur operator - (const Vecteur & v_1, const Vecteur & v_2);
Real getY() const; //produit scalaire
void setY(Real y); friend float operator * (const Vecteur & v_1, const Vecteur & v_2);
//multiplication par un scalaire
Real getZ() const; friend Vecteur operator * (const Vecteur & v_1, float scalaire);
void setZ(Real z); friend Vecteur operator * (float scalaire, const Vecteur & v);
//produit vectoriel
void setXYZ(Real x, Real y, Real z); friend Vecteur operator ^ (const Vecteur & v_1, const Vecteur & v_2);
// miscellaneous functions };
// *********************** #endif
Real length() const;
Real lengthSquare() const;
void normalize();
// data
// ****
// public members EXCEPTIONNALY : to simplify use of this class
Real x, y, z;
private:
// data
// ****
// see public part
};
#endif
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment