public static Vector3 Surface(ref UMT.MersenneTwister _rand, MTRandom.Normalization n, float t) { Vector3 pos = new Vector3(); switch (n) { case MTRandom.Normalization.STDNORMAL: pos = GetPointOnCubeSurface( (float)NormalDistribution.Normalize(_rand.NextSingle(true), t), (float)NormalDistribution.Normalize(_rand.NextSingle(true), t), _rand.Next(5)); break; case MTRandom.Normalization.POWERLAW: pos = GetPointOnCubeSurface( (float)PowerLaw.Normalize(_rand.NextSingle(true), t, 0, 1), (float)PowerLaw.Normalize(_rand.NextSingle(true), t, 0, 1), _rand.Next(5)); break; default: pos = GetPointOnCubeSurface(_rand.NextSingle(true), _rand.NextSingle(true), _rand.Next(6)); break; } // Move to -1, 1 space as for CIRCLE and SPHERE return(new Vector3((2 * pos.x) - 1, (2 * pos.y) - 1, (2 * pos.z) - 1)); }
// CIRCLE with R=1 public static Vector2 Circle(ref UMT.MersenneTwister _rand) { float t = (float)_rand.Next(); float _2pi = (float)Math.PI * 2; float a = MTRandom.ScaleFloatToRange(t, 0, _2pi, 0, Int32.MaxValue); return(new Vector2((float)Math.Cos(a), (float)Math.Sin(a))); }
public static Vector2 Circle(ref UMT.MersenneTwister _rand, MTRandom.Normalization n, float t) { float r; switch (n) { case MTRandom.Normalization.STDNORMAL: r = MTRandom.ScaleFloatToRange((float)NormalDistribution.Normalize(_rand.NextSingle(true), t), 0, Int32.MaxValue, 0, 1); break; case MTRandom.Normalization.POWERLAW: r = (float)PowerLaw.Normalize(_rand.NextSingle(true), t, 0, Int32.MaxValue); break; default: r = (float)_rand.Next(); break; } float _2pi = (float)Math.PI * 2; float a = MTRandom.ScaleFloatToRange(r, 0, _2pi, 0, Int32.MaxValue); return(new Vector2((float)Math.Cos(a), (float)Math.Sin(a))); }
public static Vector3 Surface(ref UMT.MersenneTwister _rand) { // Move to -1, 1 space as for CIRCLE and SPHERE Vector3 pos = GetPointOnCubeSurface(_rand.NextSingle(true), _rand.NextSingle(true), _rand.Next(6)); return(new Vector3((2 * pos.x) - 1, (2 * pos.y) - 1, (2 * pos.z) - 1)); }