#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);
        }                 //行列を合成