#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;

//#include "Engine Core 2/Core Functions/stdhdr.h"
#include "Vector.h"
#include "Matrix.h"
#include "Matrix.cpp"

int main()
{
    Vec3 V1(1.0f, 0.0f, 0.0f), VResult;
    Matrix M1, M2, M3, M4;
    M1.Translation(Vec3(0.0f,1.0f,0.0f));
    M2.RotationZ(3.14159265358979323846f / 2.0f);
    cout << "V1 - > " << V1 << endl;
    cout << "M1 (translates one unit in the positive y direction) - > " << endl << M1 << endl;
    cout << "M2 (rotates 90 degrees about the z axis) - > " << endl << M2 << endl;
    M3 = M1*M2;
    M4 = M2*M1;
    Vec3TransformCoord(VResult, V1, M1);
    cout << "V1 * M1 -> \t" << VResult << endl;
    Vec3TransformCoord(VResult, V1, M2);
    cout << "V1 * M2 -> \t" << VResult << endl;
    Vec3TransformCoord(VResult, V1, M3);
    cout << "V1 * M1 * M2 -> " << VResult << endl;
    Vec3TransformCoord(VResult, V1, M4);
    cout << "V1 * M2 * M1 -> " << VResult << endl;
}