From b7fca748eead48959d3e435a0ad0cd36275ae5c3 Mon Sep 17 00:00:00 2001 From: Brian Fiete Date: Fri, 13 Jan 2023 06:58:22 -0500 Subject: [PATCH] Vector improvement --- BeefLibs/Beefy2D/src/geom/Vector2.bf | 32 ++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/BeefLibs/Beefy2D/src/geom/Vector2.bf b/BeefLibs/Beefy2D/src/geom/Vector2.bf index d39b4756..7db097fc 100644 --- a/BeefLibs/Beefy2D/src/geom/Vector2.bf +++ b/BeefLibs/Beefy2D/src/geom/Vector2.bf @@ -6,6 +6,11 @@ namespace Beefy.geom { public struct Vector2 { + private static Vector2 sZero = Vector2(0f, 0f); + private static Vector2 sOne = Vector2(1f, 1f); + private static Vector2 sUnitX = Vector2(1f, 0f); + private static Vector2 sUnitY = Vector2(0f, 1f); + public float mX; public float mY; @@ -39,6 +44,33 @@ namespace Beefy.geom mY = y; } + public Vector2 Normalized => Vector2(mX, mY)..Normalize(); + + public static Vector2 Normalize(Vector2 vector) + { + Vector2 newVec; + Normalize(vector, out newVec); + return newVec; + } + + public static void Normalize(Vector2 value, out Vector2 result) + { + float factor= Distance(value, sZero); + factor = 1f / factor; + result.mX = value.mX * factor; + result.mY = value.mY * factor; + } + + public void Normalize() mut + { + Normalize(this, out this); + } + + public static float Cross(Vector2 vector1, Vector2 vector2) + { + return vector1.mX * vector2.mY - vector1.mY * vector2.mX; + } + public static void DistanceSquared(Vector2 value1, Vector2 value2, out float result) { result = (value1.mX - value2.mX) * (value1.mX - value2.mX) +