Ignore:
Timestamp:
08/03/2009 01:42:48 PM (10 years ago)
Author:
dave
Message:

added the eigen spaces and the rest of the data associated with this, faces, etc

File:
1 edited

Legend:

Unmodified
Added
Removed
  • foam/trunk/vision/src/Matrix.h

    r96 r97  
    9494        void SetRowVector(unsigned int r, const Vector<T> &row); 
    9595        void SetColVector(unsigned int c, const Vector<T> &col); 
    96           
     96        void NormaliseRows(); 
     97        void NormaliseCols(); 
     98 
    9799        void Print() const; 
    98100        void SetAll(T s); 
     
    119121        Matrix CropCols(unsigned int s, unsigned int e); 
    120122 
    121         void Save(FILE *f); 
     123        void Save(FILE *f) const; 
    122124        void Load(FILE *f); 
    123125 
     
    230232Matrix<T> Matrix<T>::Transposed() const 
    231233{ 
    232         Matrix<T> copy(*this); 
     234        Matrix<T> copy(m_Cols,m_Rows); 
    233235        for (unsigned int i=0; i<m_Rows; i++) 
    234236        { 
    235237                for (unsigned int j=0; j<m_Cols; j++) 
    236238                { 
    237                         copy[i][j]=(*this)[j][i]; 
     239                        copy[j][i]=(*this)[i][j]; 
    238240                } 
    239241        } 
     
    255257Matrix<T> Matrix<T>::operator+(const Matrix &other) const 
    256258{ 
    257         assert(m_Rows=other.m_Rows); 
    258         assert(m_Cols=other.m_Cols); 
     259        assert(m_Rows==other.m_Rows); 
     260        assert(m_Cols==other.m_Cols); 
    259261         
    260262        Matrix<T> ret(m_Rows,m_Cols); 
     
    272274Matrix<T> Matrix<T>::operator-(const Matrix &other) const 
    273275{ 
    274         assert(m_Rows=other.m_Rows); 
    275         assert(m_Cols=other.m_Cols); 
     276        assert(m_Rows==other.m_Rows); 
     277        assert(m_Cols==other.m_Cols); 
    276278         
    277279        Matrix<T> ret(m_Rows,m_Cols); 
     
    530532 
    531533template<class T> 
    532 void Matrix<T>::Save(FILE* f) 
     534void Matrix<T>::NormaliseRows() 
     535{ 
     536        for(unsigned int i=0; i<m_Rows; i++) 
     537        { 
     538                SetRowVector(i,GetRowVector(i).Normalised()); 
     539        } 
     540} 
     541 
     542template<class T> 
     543void Matrix<T>::NormaliseCols() 
     544{ 
     545        for(unsigned int i=0; i<m_Cols; i++) 
     546        { 
     547                SetColVector(i,GetColVector(i).Normalised()); 
     548        } 
     549} 
     550 
     551template<class T> 
     552void Matrix<T>::Save(FILE* f) const 
    533553{ 
    534554        int version = 1;         
     
    638658         
    639659        assert(j.Inverted()==k); 
     660                 
     661        Matrix<float> l(2,2); 
     662        l[0][0]=3; 
     663        l[0][1]=3; 
     664        l[1][0]=0; 
     665        l[1][1]=0; 
     666         
     667        Matrix<float> n(2,2); 
     668        n[0][0]=2; 
     669        n[0][1]=2; 
     670        n[1][0]=0; 
     671        n[1][1]=0; 
     672         
     673        n*=l; 
     674         
     675        Matrix<float> o(4,4); 
     676        o.Zero(); 
     677        o[0][0]=1; 
     678        o[1][1]=1; 
     679        o[2][2]=1; 
     680        o[3][3]=1; 
     681         
     682        j*=k; 
     683        assert(j==o); 
     684 
     685        { 
     686                Matrix<float> a(2,3); 
     687                Matrix<float> b(3,2); 
     688                 
     689                a[0][0]=1; a[0][1]=2; a[0][2]=3; 
     690                a[1][0]=4; a[1][1]=5; a[1][2]=6; 
     691 
     692                b[0][0]=2; b[0][1]=3; 
     693                b[1][0]=-1; b[1][1]=1; 
     694                b[2][0]=1; b[2][1]=2; 
     695                 
     696                Matrix<float> result(2,2); 
     697                result[0][0]=3; result[0][1]=11; 
     698                result[1][0]=9; result[1][1]=29; 
     699                 
     700                assert(a*b==result); 
     701        } 
     702         
    640703} 
    641704 
Note: See TracChangeset for help on using the changeset viewer.