Add NextUnitCircleVector2 extension method

Adds the NextUnitCircleVector2 extension method which produces a Vector2 on a unit circle with a magnitude equal to the radius.
This commit is contained in:
rkrahn
2024-02-15 14:51:55 -08:00
committed by GitHub
parent 6548ca1148
commit 9a5db2ff8e

View File

@@ -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);
}
/// <summary>
/// Generates a random <see cref="Vector2"/> point on a circle of a given radius.
/// </summary>
/// <param name="random">An instance of <see cref="Random"/>.</param>
/// <param name="radius">Radius of circle. Default 1.0f./>.</param>
/// <returns>A random <see cref="Vector2"/>.</returns>
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);
}
/// <summary>
/// Generates a uniformly distributed random unit length vector point on a unit sphere.