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