From 9a5db2ff8e745151f15281f40ab78fa55fa8ee6d Mon Sep 17 00:00:00 2001 From: rkrahn Date: Thu, 15 Feb 2024 14:51:55 -0800 Subject: [PATCH] Add NextUnitCircleVector2 extension method Adds the NextUnitCircleVector2 extension method which produces a Vector2 on a unit circle with a magnitude equal to the radius. --- Source/Engine/Utilities/Extensions.cs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/Source/Engine/Utilities/Extensions.cs b/Source/Engine/Utilities/Extensions.cs index a1834624e..dde5eb5c7 100644 --- a/Source/Engine/Utilities/Extensions.cs +++ b/Source/Engine/Utilities/Extensions.cs @@ -300,6 +300,18 @@ namespace FlaxEngine.Utilities var randomRadius = (float)random.NextDouble() * radius; return new Vector2((float)Math.Cos(random.NextDouble()) * randomRadius, (float)Math.Sin(random.NextDouble()) * randomRadius); } + + /// + /// Generates a random point on a circle of a given radius. + /// + /// An instance of . + /// Radius of circle. Default 1.0f./>. + /// A random . + public static Vector2 NextUnitCircleVector2(this Random random, float radius = 1.0f) + { + double randomDegree = random.NextDouble() * 360; + return new Vector2((float)Math.Cos(randomDegree) * radius, (float)Math.Sin(randomDegree) * radius); + } /// /// Generates a uniformly distributed random unit length vector point on a unit sphere.