public static float[] RandomUnitVector3() { float x = Rand.Float(-1, 1); float y = Rand.Float(-1, 1); float z = Rand.Float(-1, 1); float len = (float)Math.Sqrt(x * x + y * y + z * z); return(new float[] { x / len, y / len, z / len }); }
public static float[] RandomizeInMinMax(this float[] center, MinMax minmax) { float x = Rand.Float(minmax.Min.X, minmax.Max.X); float y = Rand.Float(minmax.Min.Y, minmax.Max.Y); float z = Rand.Float(minmax.Min.Z, minmax.Max.Z); float[] arr = new float[] { x, y, z }; float[] result = new float[center.Length]; for (int i = 0; i < result.Length; i++) { result[i] = center[i] + arr[i]; } return(result); }
public static float[] RandomizeInRadius(this float[] center, float radius) { float val = Rand.Float(radius); float[] vec = CommonUtils.RandomUnitVector3(); for (int i = 0; i < vec.Length; i++) { vec[i] *= val; } float[] result = new float[center.Length]; for (int i = 0; i < result.Length; i++) { result[i] = center[i] + vec[i]; } return(result); }