41 lines
1.4 KiB
C++
41 lines
1.4 KiB
C++
#pragma once
|
|
|
|
|
|
#include <J3ML/LinearAlgebra/Matrix3x3.hpp>
|
|
|
|
namespace J3ML::LinearAlgebra {
|
|
class Transform2D {
|
|
protected:
|
|
Matrix3x3 transformation;
|
|
public:
|
|
|
|
const static Transform2D Identity;
|
|
const static Transform2D FlipX;
|
|
const static Transform2D FlipY;
|
|
|
|
Transform2D(float rotation, const Vector2& pos);
|
|
Transform2D(float px, float py, float sx, float sy, float ox, float oy, float kx, float ky, float rotation)
|
|
{
|
|
transformation = Matrix3x3(px, py, rotation, sx, sy, ox, oy, kx, ky);
|
|
}
|
|
Transform2D(const Vector2& pos, const Vector2& scale, const Vector2& origin, const Vector2& skew, float rotation);
|
|
Transform2D(const Matrix3x3& transform);
|
|
Transform2D Translate(const Vector2& offset) const;
|
|
Transform2D Translate(float x, float y) const;
|
|
Transform2D Scale(float scale); // Perform Uniform Scale
|
|
Transform2D Scale(float x, float y); // Perform Nonunform Scale
|
|
Transform2D Scale(const Vector2& scales); // Perform Nonuniform Scale
|
|
Transform2D Rotate();
|
|
Vector2 Transform(const Vector2& input) const;
|
|
Transform2D Inverse() const;
|
|
Transform2D AffineInverse() const;
|
|
float Determinant() const;
|
|
Vector2 GetOrigin() const;
|
|
float GetRotation() const;
|
|
Vector2 GetScale() const;
|
|
float GetSkew() const;
|
|
Transform2D OrthoNormalize();
|
|
};
|
|
}
|
|
|