From 0b2fcff4eab4ae559311b675e370798788efa185 Mon Sep 17 00:00:00 2001 From: rkrahn Date: Thu, 15 Feb 2024 14:34:50 -0800 Subject: [PATCH 1/2] Fix NextUnitVector2 Fixed NextUnitVector2 method not producing a vector within a unit circle. --- Source/Engine/Utilities/Extensions.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Source/Engine/Utilities/Extensions.cs b/Source/Engine/Utilities/Extensions.cs index a1834624e..57eafc4a3 100644 --- a/Source/Engine/Utilities/Extensions.cs +++ b/Source/Engine/Utilities/Extensions.cs @@ -297,8 +297,9 @@ namespace FlaxEngine.Utilities /// A random . public static Vector2 NextUnitVector2(this Random random, float radius = 1.0f) { - var randomRadius = (float)random.NextDouble() * radius; - return new Vector2((float)Math.Cos(random.NextDouble()) * randomRadius, (float)Math.Sin(random.NextDouble()) * randomRadius); + float magnitude = (float)random.NextDouble() * radius; + double randomDegree = random.NextDouble() * 360; + return new Vector2((float)Math.Cos(randomDegree) * magnitude, (float)Math.Sin(randomDegree) * magnitude); } /// From 4ad5eb26d6d1420759c61cc291599d0745960800 Mon Sep 17 00:00:00 2001 From: rkrahn Date: Mon, 19 Feb 2024 13:00:38 -0800 Subject: [PATCH 2/2] Fix NextUnitVector2 degree to radian Fixes the use of degrees when radians should be used. --- Source/Engine/Utilities/Extensions.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Source/Engine/Utilities/Extensions.cs b/Source/Engine/Utilities/Extensions.cs index 57eafc4a3..0da0c00c7 100644 --- a/Source/Engine/Utilities/Extensions.cs +++ b/Source/Engine/Utilities/Extensions.cs @@ -298,8 +298,8 @@ namespace FlaxEngine.Utilities public static Vector2 NextUnitVector2(this Random random, float radius = 1.0f) { float magnitude = (float)random.NextDouble() * radius; - double randomDegree = random.NextDouble() * 360; - return new Vector2((float)Math.Cos(randomDegree) * magnitude, (float)Math.Sin(randomDegree) * magnitude); + double randomRadian = random.NextDouble() * Mathf.RevolutionsToRadians; + return new Vector2((float)Math.Cos(randomRadian) * magnitude, (float)Math.Sin(randomRadian) * magnitude); } ///