Ignore:
Timestamp:
06/03/2009 10:01:22 AM (11 years ago)
Author:
dave
Message:

renamed faceident as it's not so simple these days

File:
1 edited

Legend:

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

    r86 r89  
    9292        Vector<T> GetRowVector(unsigned int r) const;  
    9393        Vector<T> GetColVector(unsigned int c) const;  
     94        void SetRowVector(unsigned int r, const Vector<T> &row); 
     95        void SetColVector(unsigned int c, const Vector<T> &col); 
    9496          
    9597        void Print() const; 
     
    107109        Matrix &operator*=(const Matrix &other); 
    108110         
     111        void SortRows(Vector<T> &v); 
     112        void SortCols(Vector<T> &v); 
     113 
    109114        static void RunTests(); 
    110115         
     
    303308} 
    304309 
     310 
     311//todo: use memcpy for these 4 functions 
    305312template<class T> 
    306313Vector<T> Matrix<T>::GetRowVector(unsigned int r) const 
     
    326333        return ret; 
    327334} 
     335 
     336template<class T> 
     337void Matrix<T>::SetRowVector(unsigned int r, const Vector<T> &row) 
     338{ 
     339        assert(r<m_Rows); 
     340        assert(row.Size()==m_Cols); 
     341        for (unsigned int j=0; j<m_Cols; j++) 
     342        { 
     343                (*this)[r][j]=row[j]; 
     344        } 
     345} 
     346 
     347template<class T> 
     348void Matrix<T>::SetColVector(unsigned int c, const Vector<T> &col) 
     349{ 
     350        assert(c<m_Cols); 
     351        assert(col.Size()==m_Rows); 
     352        for (unsigned int i=0; i<m_Rows; i++) 
     353        { 
     354                (*this)[i][c]=col[i]; 
     355        } 
     356} 
     357 
     358// sort rows by v 
     359template<class T> 
     360void Matrix<T>::SortRows(Vector<T> &v) 
     361{ 
     362        assert(v.Size()==m_Rows); 
     363         
     364        bool sorted=false; 
     365        while(!sorted) 
     366        { 
     367                sorted=true; 
     368                 
     369                for (unsigned int i=0; i<v.Size()-1; i++) 
     370                { 
     371                        if (v[i]<v[i+1]) 
     372                        { 
     373                                sorted=false; 
     374                                float vtmp = v[i]; 
     375                                v[i]=v[i+1]; 
     376                                v[i+1]=vtmp; 
     377                                 
     378                                Vector<float> rtmp = GetRowVector(i); 
     379                                SetRowVector(i,GetRowVector(i+1)); 
     380                                SetRowVector(i+1,rtmp); 
     381                        } 
     382                } 
     383        } 
     384} 
     385 
     386// sort cols by v 
     387template<class T> 
     388void Matrix<T>::SortCols(Vector<T> &v) 
     389{ 
     390        assert(v.Size()==m_Cols); 
     391         
     392        bool sorted=false; 
     393        while(!sorted) 
     394        { 
     395                sorted=true; 
     396                 
     397                for (unsigned int i=0; i<v.Size()-1; i++) 
     398                { 
     399                        if (v[i]<v[i+1]) 
     400                        { 
     401                                sorted=false; 
     402                                float vtmp = v[i]; 
     403                                v[i]=v[i+1]; 
     404                                v[i+1]=vtmp; 
     405                                 
     406                                Vector<float> rtmp = GetColVector(i); 
     407                                SetColVector(i,GetColVector(i+1)); 
     408                                SetColVector(i+1,rtmp); 
     409                        } 
     410                } 
     411        } 
     412} 
     413 
    328414 
    329415template<class T> 
Note: See TracChangeset for help on using the changeset viewer.