36 lines
941 B
C++
36 lines
941 B
C++
#pragma once
|
|
|
|
#include <J3ML/LinearAlgebra.h>
|
|
#include <J3ML/LinearAlgebra/Vector2.h>
|
|
|
|
namespace LinearAlgebra {
|
|
class Matrix2x2 {
|
|
public:
|
|
enum { Rows = 3 };
|
|
enum { Cols = 3 };
|
|
static const Matrix2x2 Zero;
|
|
static const Matrix2x2 Identity;
|
|
static const Matrix2x2 NaN;
|
|
|
|
Matrix2x2() {}
|
|
Matrix2x2(float val);
|
|
Matrix2x2(float m00, float m01, float m10, float m11);
|
|
Matrix2x2(const Vector2& r1, const Vector2& r2);
|
|
Vector2 GetRow(int index) const;
|
|
Vector2 GetColumn(int index) const;
|
|
float At(int x, int y) const;
|
|
|
|
float Determinant() const;
|
|
Matrix2x2 Inverse() const;
|
|
Matrix2x2 Transpose() const;
|
|
|
|
Vector2 Transform(const Vector2& rhs) const;
|
|
|
|
|
|
Vector2 operator * (const Vector2& rhs) const;
|
|
Matrix2x2 operator * (const Matrix2x2 &rhs) const;
|
|
|
|
protected:
|
|
float elems[2][2];
|
|
};
|
|
} |