// marVector.h: interface for the marVector class. // ////////////////////////////////////////////////////////////////////// #include #include class marVector { public: /* Remarque : les (double*) sont organisés ligne par ligne */ /*==Constructeurs========================================*/ marVector(size_t s=3); marVector(double* v,size_t s); marVector(const marVector & v); /*==Destructeur========================================*/ virtual ~marVector(); /*==Opérateurs========================================*/ /* Affectation */ marVector& operator=(const marVector& o); marVector& operator=(double o); marVector& operator=(double* o); /* Affichage */ friend std::ostream& operator<<(std::ostream& os, const marVector& v); /* Casting */ operator double*() const ; /* Indexation */ double& operator()(size_t i); const double& operator()(size_t i) const; /* Comparaison */ bool operator==(const marVector& o) const; bool operator!=(const marVector& o) const; /* Addition */ marVector operator+(const marVector& o); marVector operator+(double o); marVector operator+(double* o); /* Addition + Affectation */ marVector& operator+=(const marVector& o); marVector& operator+=(double o); marVector& operator+=(double* o); /* Soustraction */ marVector operator-(const marVector& o); marVector operator-(double o); marVector operator-(double* o); /* Soustraction + Affectation */ marVector& operator-=(const marVector& o); marVector& operator-=(double o); marVector& operator-=(double* o); /* Multiplication (produit scalaire) */ marVector operator*(double o); /* Multiplication (produit scalaire) + Affectation */ marVector& operator*=(double o); /* Division (division scalaire) */ marVector operator/(double o); /* Division (division scalaire) + Affectation */ marVector& operator/=(double o); /*==Opérations========================================*/ /* produit scalaire */ double dot( const marVector& o ); double dot( double* o ); /* produit vectoriel (3D uniquement): le resultat est renvoye */ marVector cross( const marVector& o ); marVector cross( double* o ); /* produit vectoriel (3D uniquement): le resultat est stocké dans this*/ int scross( const marVector& o ); // renvoie 0 si OK, 1 sinon int scross( double* o ); // renvoie 0 si OK, 1 sinon /* norme euclidienne */ double norm2( ); /* normalisation */ marVector normalize( ); // resultat renvoyé int snormalize( ); // resultat stocké dans this, renvoie 0 si OK, 1 sinon /*==Méthodes========================================*/ size_t size() const; /*==Attributs========================================*/ private: bool shallowCopy; // true if _data is a shallow copy of original data (pointer copy) size_t _size; double* _data; };