Matrix2x2.cs 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. namespace Ryujinx.Audio.Renderer.Utils.Math
  2. {
  3. record struct Matrix2x2
  4. {
  5. public float M11;
  6. public float M12;
  7. public float M21;
  8. public float M22;
  9. public Matrix2x2(float m11, float m12,
  10. float m21, float m22)
  11. {
  12. M11 = m11;
  13. M12 = m12;
  14. M21 = m21;
  15. M22 = m22;
  16. }
  17. public static Matrix2x2 operator +(Matrix2x2 value1, Matrix2x2 value2)
  18. {
  19. Matrix2x2 m;
  20. m.M11 = value1.M11 + value2.M11;
  21. m.M12 = value1.M12 + value2.M12;
  22. m.M21 = value1.M21 + value2.M21;
  23. m.M22 = value1.M22 + value2.M22;
  24. return m;
  25. }
  26. public static Matrix2x2 operator -(Matrix2x2 value1, float value2)
  27. {
  28. Matrix2x2 m;
  29. m.M11 = value1.M11 - value2;
  30. m.M12 = value1.M12 - value2;
  31. m.M21 = value1.M21 - value2;
  32. m.M22 = value1.M22 - value2;
  33. return m;
  34. }
  35. public static Matrix2x2 operator *(Matrix2x2 value1, float value2)
  36. {
  37. Matrix2x2 m;
  38. m.M11 = value1.M11 * value2;
  39. m.M12 = value1.M12 * value2;
  40. m.M21 = value1.M21 * value2;
  41. m.M22 = value1.M22 * value2;
  42. return m;
  43. }
  44. public static Matrix2x2 operator *(Matrix2x2 value1, Matrix2x2 value2)
  45. {
  46. Matrix2x2 m;
  47. // First row
  48. m.M11 = value1.M11 * value2.M11 + value1.M12 * value2.M21;
  49. m.M12 = value1.M11 * value2.M12 + value1.M12 * value2.M22;
  50. // Second row
  51. m.M21 = value1.M21 * value2.M11 + value1.M22 * value2.M21;
  52. m.M22 = value1.M21 * value2.M12 + value1.M22 * value2.M22;
  53. return m;
  54. }
  55. }
  56. }