ZIMMath.cs 757 B

123456789101112131415161718192021222324
  1. using o0.Geometry2D.Float;
  2. using System;
  3. using UnityEngine;
  4. namespace ZIM.Unity
  5. {
  6. public static partial class ZIMMath
  7. {
  8. // Projects a vector onto another vector.
  9. public static Vector2 Project(this Vector2 vector, Vector2 onNormal)
  10. {
  11. float dotProduct = Vector2.Dot(vector, onNormal);
  12. float magnitudeSquared = onNormal.sqrMagnitude;
  13. if (magnitudeSquared < Mathf.Epsilon)
  14. return Vector2.zero;
  15. return (dotProduct / magnitudeSquared) * onNormal;
  16. }
  17. public static float LengthManhattan(this Vector2 v) => Math.Abs(v.x) + Math.Abs(v.y);
  18. public static double LengthManhattan(Vector2 v1, Vector2 v2) => (v1 - v2).LengthManhattan();
  19. }
  20. }