#include "matrixlib.h"
Point2D Transform2D(Point2D p,Matrix33 m){
Point2D retp;
retp.x=m.m11*p.x+m.m12*p.y+m.m13;
retp.y=m.m21*p.x+m.m22*p.y+m.m23;
return(retp);
}; //座標を変換
Matrix33 GetTranslateMatrix(float tx,float ty){
Matrix33 retmat;
retmat.m11=1;retmat.m12=0;retmat.m13=tx;
retmat.m21=0;retmat.m22=1;retmat.m23=ty;
retmat.m31=0;retmat.m32=0;retmat.m33=1;
return(retmat);
} //移動行列
Matrix33 GetRotateMatrix(float rad){
Matrix33 retmat;
retmat.m11=cos(rad);retmat.m12=-sin(rad);retmat.m13=0;
retmat.m21=sin(rad);retmat.m22=cos(rad);retmat.m23=0;
retmat.m31=0;retmat.m32=0;retmat.m33=1;
return(retmat); //回転行列
}
Matrix33 MultiMatrix(Matrix33 a,Matrix33 b){
Matrix33 retmat;
retmat.m11=a.m11*b.m11+a.m12*b.m21+a.m13*b.m31;
retmat.m12=a.m11*b.m12+a.m12*b.m22+a.m13*b.m32;
retmat.m13=a.m11*b.m13+a.m12*b.m23+a.m13*b.m33;
retmat.m21=a.m21*b.m11+a.m22*b.m21+a.m23*b.m31;
retmat.m22=a.m21*b.m12+a.m22*b.m22+a.m23*b.m32;
retmat.m23=a.m21*b.m13+a.m22*b.m23+a.m23*b.m33;
retmat.m31=a.m31*b.m11+a.m32*b.m21+a.m33*b.m31;
retmat.m32=a.m31*b.m12+a.m32*b.m22+a.m33*b.m32;
retmat.m33=a.m31*b.m13+a.m32*b.m23+a.m33*b.m33;
return(retmat);
}
//行列を合成