mirror of
https://github.com/UOH-CS-Level5/551455-graphics-programming-2526-the-repo-Zyb3rWolfi.git
synced 2025-11-29 00:43:08 +00:00
130 lines
3.1 KiB
C#
130 lines
3.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using OpenTK.Mathematics;
|
|
|
|
public class MyMatrix
|
|
{
|
|
|
|
private float[,] elements = new float[4, 4];
|
|
|
|
public MyMatrix(float pRow0Column0,
|
|
float pRow0Column1,
|
|
float pRow0Column2,
|
|
float pRow0Column3,
|
|
float pRow1Column0,
|
|
float pRow1Column1,
|
|
float pRow1Column2,
|
|
float pRow1Column3,
|
|
float pRow2Column0,
|
|
float pRow2Column1,
|
|
float pRow2Column2,
|
|
float pRow2Column3,
|
|
float pRow3Column0,
|
|
float pRow3Column1,
|
|
float pRow3Column2,
|
|
float pRow3Column3)
|
|
{
|
|
// row 0
|
|
SetElement(0, 0, pRow0Column0);
|
|
SetElement(0, 1, pRow0Column1);
|
|
SetElement(0, 2, pRow0Column2);
|
|
SetElement(0, 3, pRow0Column3);
|
|
|
|
// row 1
|
|
SetElement(1, 0, pRow1Column0);
|
|
SetElement(1, 1, pRow1Column1);
|
|
SetElement(1, 2, pRow1Column2);
|
|
SetElement(1, 3, pRow1Column3);
|
|
|
|
// row 2
|
|
SetElement(2, 0, pRow2Column0);
|
|
SetElement(2, 1, pRow2Column1);
|
|
SetElement(2, 2, pRow2Column2);
|
|
SetElement(2, 3, pRow2Column3);
|
|
|
|
// row 3
|
|
SetElement(3, 0, pRow3Column0);
|
|
SetElement(3, 1, pRow3Column1);
|
|
SetElement(3, 2, pRow3Column2);
|
|
SetElement(3, 3, pRow3Column3);
|
|
}
|
|
|
|
public float GetElement(int pRow, int pColumn)
|
|
{
|
|
return elements[pRow, pColumn];
|
|
}
|
|
public void SetElement(int pRow, int pColumn, float pValue)
|
|
{
|
|
elements[pRow, pColumn] = pValue;
|
|
}
|
|
|
|
|
|
|
|
public static MyMatrix CreateIdentity()
|
|
{
|
|
return new MyMatrix(
|
|
1, 0, 0, 0,
|
|
0, 1, 0, 0,
|
|
0, 0, 1, 0,
|
|
0, 0, 0, 1
|
|
);
|
|
}
|
|
|
|
public static MyMatrix CreateTranslation(MyVector pTranslation)
|
|
{
|
|
return new MyMatrix(1f, 0f, 0f, 0f,
|
|
0f, 1f, 0f, 0f,
|
|
0f, 0f, 1f, 0f,
|
|
pTranslation.X, pTranslation.Y, pTranslation.Z, 1f);
|
|
}
|
|
|
|
public static MyMatrix CreateScale(MyVector pScale)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
public static MyMatrix CreateRotationX(float pAngle)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
public static MyMatrix CreateRotationY(float pAngle)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
public static MyMatrix CreateRotationZ(float pAngle)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
public MyVector Multiply(MyVector pVector)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
public MyMatrix Multiply(MyMatrix pMatrix)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
public MyMatrix Inverse()
|
|
{
|
|
return null;
|
|
}
|
|
|
|
// this method takes our MyMatrix and converts it to an OpenTK Matrix4
|
|
// this looks a little odd as the OpenTK Matrix4 constructor takes the elements in row major order
|
|
public Matrix4 ToMatrix4()
|
|
{
|
|
return new Matrix4(
|
|
GetElement(0,0), GetElement(0,1), GetElement(0,2), GetElement(0,3),
|
|
GetElement(1,0), GetElement(1,1), GetElement(1,2), GetElement(1,3),
|
|
GetElement(2,0), GetElement(2,1), GetElement(2,2), GetElement(2,3),
|
|
GetElement(3,0), GetElement(3,1), GetElement(3,2), GetElement(3,3)
|
|
);
|
|
}
|
|
|
|
|
|
}
|