MatrixUtilities.h


Dosyayı İndir
#ifndef MATRIXUTITILIES_H_INCLUDED
#define MATRIXUTITILIES_H_INCLUDED

#include "SpaceVector.h"
#include "SpaceMatrix.h"
#include "SpaceBody.h"

SpaceMatrix matrixTranspose(SpaceMatrix &source){
    SpaceMatrix result;
    for(int row=0;row<DIMENSION_COUNT;row++){
        for(int column=0;column<DIMENSION_COUNT;column++){
            result.setValue(column,row,source.getValue(row,column));
        }
    }
    return result;
}
SpaceMatrix matrixDiagonal(const double xx, const double yy,const double zz,const double ww){
    SpaceMatrix matrix;
    matrix.setValue(X,X,xx);
    matrix.setValue(Y,Y,yy);
    matrix.setValue(Z,Z,zz);
    matrix.setValue(W,W,ww);
    return matrix;
}

SpaceMatrix matrixIdentity(){
    return matrixDiagonal(1.0,1.0,1.0,1.0);
}


SpaceMatrix matrixScaling(const SpaceVector &scale){
    SpaceMatrix matrix=matrixIdentity();
    matrix.setValue(X,X,scale.getX());
    matrix.setValue(Y,Y,scale.getY());
    matrix.setValue(Z,Z,scale.getZ());
    matrix.setValue(W,W,1);
    return matrix;
}

SpaceMatrix matrixTranslate(const SpaceVector &translate){
    SpaceMatrix matrix=matrixIdentity();
    matrix.setValue(X,X,1);
    matrix.setValue(X,W,translate.getX());
    matrix.setValue(Y,Y,1);
    matrix.setValue(Y,W,translate.getY());
    matrix.setValue(Z,Z,1);
    matrix.setValue(Z,W,translate.getZ());
    matrix.setValue(W,W,1);
    return matrix;
}
SpaceMatrix matrixRotateX(const double angleX){
    SpaceMatrix matrix=matrixIdentity();
    double sinX=sinus(angleX);
    double cosX=cosinus(angleX);
    matrix.setValue(X,X,1);
    matrix.setValue(Y,Y,cosX);
    matrix.setValue(Y,Z,-sinX);
    matrix.setValue(Z,Y,sinX);
    matrix.setValue(Z,Z,cosX);
    matrix.setValue(W,W,1);
    return matrix;
}
SpaceMatrix matrixRotateY(const double angleY){
    SpaceMatrix matrix=matrixIdentity();
    double sinY=sinus(angleY);
    double cosY=cosinus(angleY);
    matrix.setValue(X,X,cosY);
    matrix.setValue(X,Z,sinY);
    matrix.setValue(Y,Y,1);
    matrix.setValue(Z,X,-sinY);
    matrix.setValue(Z,Z,cosY);
    matrix.setValue(W,W,1);
    return matrix;
}
SpaceMatrix matrixRotateZ(const double angleZ){
    SpaceMatrix matrix=matrixIdentity();
    double sinZ=sinus(angleZ);
    double cosZ=cosinus(angleZ);
    matrix.setValue(X,X,cosZ);
    matrix.setValue(X,Y,-sinZ);
    matrix.setValue(Y,X,sinZ);
    matrix.setValue(Y,Y,cosZ);
    matrix.setValue(Z,Z,1);
    matrix.setValue(W,W,1);
    return matrix;
}


#endif

				
Dosyayı İndir

Bu Sayfayı Paylaş:




Bu Sayfayı Paylaş:

İletişim Bilgileri

Takip Et

Her Hakkı Saklıdır. Bu sitede yayınlanan tüm bilgi ve fikirlerin kullanımından fibiler.com sorumlu değildir. Bu sitede üretilmiş , derlenmiş içerikleri, fibiler.com'u kaynak göstermek koşuluyla kendi sitenizde kullanılabilirsiniz. Ancak telif hakkı olan içeriklerin hakları sahiplerine aittir