Matrix2x3.cs 919 B

123456789101112131415161718192021222324252627282930313233
  1. using UnityEngine;
  2. namespace Coffee.UIEffects
  3. {
  4. /// <summary>
  5. /// Matrix2x3.
  6. /// </summary>
  7. public struct Matrix2x3
  8. {
  9. public float m00, m01, m02, m10, m11, m12;
  10. public Matrix2x3(Rect rect, float cos, float sin)
  11. {
  12. const float center = 0.5f;
  13. float dx = -rect.xMin / rect.width - center;
  14. float dy = -rect.yMin / rect.height - center;
  15. m00 = cos / rect.width;
  16. m01 = -sin / rect.height;
  17. m02 = dx * cos - dy * sin + center;
  18. m10 = sin / rect.width;
  19. m11 = cos / rect.height;
  20. m12 = dx * sin + dy * cos + center;
  21. }
  22. public static Vector2 operator *(Matrix2x3 m, Vector2 v)
  23. {
  24. return new Vector2(
  25. (m.m00 * v.x) + (m.m01 * v.y) + m.m02,
  26. (m.m10 * v.x) + (m.m11 * v.y) + m.m12
  27. );
  28. }
  29. }
  30. }