Rect2.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. namespace Island.StandardLib.Math
  6. {
  7. /// <summary>
  8. /// 表示一个二维矩形
  9. /// </summary>
  10. public class Rect2
  11. {
  12. /// <summary>
  13. /// 矩形的最小X坐标
  14. /// </summary>
  15. public float X { get; set; }
  16. /// <summary>
  17. /// 矩形的最小Y坐标
  18. /// </summary>
  19. public float Y { get; set; }
  20. /// <summary>
  21. /// 矩形的宽度
  22. /// </summary>
  23. public float SizeX { get; set; }
  24. /// <summary>
  25. /// 矩形的高度
  26. /// </summary>
  27. public float SizeY { get; set; }
  28. public Rect2(Vector2 start, Vector2 size)
  29. {
  30. X = start.X;
  31. Y = start.Y;
  32. SizeX = size.X;
  33. SizeY = size.Y;
  34. }
  35. public Rect2(float x, float y, float sizeX, float sizeY)
  36. {
  37. X = x;
  38. Y = y;
  39. SizeX = sizeX;
  40. SizeY = sizeY;
  41. }
  42. /// <summary>
  43. /// 选定点是否在此矩形内
  44. /// </summary>
  45. /// <param name="point">选定的点</param>
  46. /// <returns></returns>
  47. public bool Contains(Vector2 point)
  48. {
  49. return X < point.X && X + SizeX > point.X && Y < point.Y && Y + SizeY > point.Y;
  50. }
  51. /// <summary>
  52. /// 获取矩形的中间点
  53. /// </summary>
  54. /// <returns></returns>
  55. public Vector2 GetNormalVector()
  56. {
  57. return new Vector2(X + (SizeX / 2), Y + (SizeY / 2));
  58. }
  59. }
  60. }