Random _random = new Random();
private Vector3 RandomPointOnPlane(Vector3 position, Vector3 normal, float radius)
{
Vector3 random = new Vector3();
Vector3 randomPoint;
do
{
random.X = 2.0f * (float)_random.NextDouble() - 1.0f;
random.Y = 2.0f * (float)_random.NextDouble() - 1.0f;
random.Z = 2.0f * (float)_random.NextDouble() - 1.0f;
Vector3.Cross(ref random, ref normal, out randomPoint);
} while (randomPoint == Vector3.Zero);
randomPoint.Normalize();
randomPoint *= radius * (float)Math.Sqrt(_random.NextDouble());
randomPoint += position;
return randomPoint;
}
I have experience working with C++ and DirectX. I prefer working with C# and WPF. In my spare time I work with HTML, JS, CSS.
Tuesday, May 11, 2010
XNA Random Point On Plane
This method generates random points in a circle with a specified radius. The circle lies on a plane defined with a position and a normal. The generated points have an uniform distribution.