00001 // marMatrix.h: interface for the marMatrix class. 00002 // 00004 00005 #include <iostream> 00006 #include <stddef.h> 00007 #include "marVector.h" 00008 00009 class marMatrix 00010 { 00011 public: 00012 /*==Constructeurs========================================*/ 00013 marMatrix(const marMatrix &m); 00014 marMatrix(double * data,size_t size1=3,size_t size2=3); 00015 marMatrix(size_t size1,size_t size2); 00016 /*==Constructeurs========================================*/ 00017 virtual ~marMatrix(); 00018 00019 /*==opérateurss========================================*/ 00020 friend std::ostream& operator<<(std::ostream& os, const marMatrix& m); 00021 00022 marMatrix& operator=( const marMatrix& o ); 00023 marMatrix& operator=( double o ); 00024 marMatrix& operator=( double* o ); 00025 00026 operator double*( ) const; 00027 00028 double& operator()( size_t i, size_t j ); 00029 const double& operator()( size_t i, size_t j ) const; 00030 00031 marMatrix operator+( const marMatrix& o ); 00032 marMatrix operator+( double o ); 00033 marMatrix operator+( double* o ); 00034 00035 marMatrix operator-( const marMatrix& o ); 00036 marMatrix operator-( double o ); 00037 marMatrix operator-( double* o ); 00038 00039 marMatrix operator*( const marMatrix& o ); 00040 marVector operator*( const marVector& o ); 00041 marMatrix operator*( double o ); 00042 00043 bool operator==( const marMatrix& o ) const; 00044 bool operator!=( const marMatrix& o ) const; 00045 00046 /*==Méthodes========================================*/ 00047 size_t columns() const; 00048 size_t rows() const; 00049 00050 /*==Attributs========================================*/ 00051 private: 00052 bool shallowCopy; // true if _data is a shallow copy of original data (pointer copy) 00053 size_t _size1; 00054 size_t _size2; 00055 double* _data; 00056 }; 00057