33 lines
921 B
C#
33 lines
921 B
C#
using UnityEngine;
|
|
|
|
namespace Coffee.UIExtensions
|
|
{
|
|
/// <summary>
|
|
/// Matrix2x3.
|
|
/// </summary>
|
|
public struct Matrix2x3
|
|
{
|
|
public float m00, m01, m02, m10, m11, m12;
|
|
|
|
public Matrix2x3(Rect rect, float cos, float sin)
|
|
{
|
|
const float center = 0.5f;
|
|
float dx = -rect.xMin / rect.width - center;
|
|
float dy = -rect.yMin / rect.height - center;
|
|
m00 = cos / rect.width;
|
|
m01 = -sin / rect.height;
|
|
m02 = dx * cos - dy * sin + center;
|
|
m10 = sin / rect.width;
|
|
m11 = cos / rect.height;
|
|
m12 = dx * sin + dy * cos + center;
|
|
}
|
|
|
|
public static Vector2 operator *(Matrix2x3 m, Vector2 v)
|
|
{
|
|
return new Vector2(
|
|
(m.m00 * v.x) + (m.m01 * v.y) + m.m02,
|
|
(m.m10 * v.x) + (m.m11 * v.y) + m.m12
|
|
);
|
|
}
|
|
}
|
|
} |