#pragma once 
#include <math.h>
#include "point3D.h"
#include "vector3D.h"

class matrix4x4
{
public:
	matrix4x4();
	matrix4x4(float,float,float,float,float,float,float,float,float,float,float,float,float,float,float,float);
	void	writeMatrix(int row, int col, float value);
	float	readMatrix(int row, int col);
	void	initMatrix(float value);
	void	initMatrixIdentity();
	void	initMatrixXYZRotation(float,float,float);
	void	initMatrixTranslation(float x,float y,float z);
	void	initMatrixUniformScale(vector3D);
	void	initMatrixPerspective(float);
	matrix4x4 transposeMatrix();
	matrix4x4 matrix4x4::operator*(matrix4x4);
	point3D matrix4x4::operator*(point3D);
	vector3D matrix4x4::operator*(vector3D);
private:
	float	matrix[4][4];
	float PI;
};
	
