private static Vector2 GenerateRandomAround(Vector2 center, float minimumDistance) { var radius = minimumDistance + minimumDistance * MathF.Random(); var angle = TwoPi * MathF.Random(); return(new Vector2(center.X + radius * angle.Sin(), center.Y + radius * angle.Cos())); }
private static void AddFirstPoint(ref Settings settings, ref State state) { var added = false; while (!added) { var p = new Vector2( settings.TopLeft.X + settings.Dimensions.X * MathF.Random(), settings.TopLeft.Y + settings.Dimensions.Y * MathF.Random()); if (settings.RejectionSqDistance != null && Vector2.DistanceSquared(settings.Center, p) > settings.RejectionSqDistance) { continue; } var index = Denormalize(p, settings.TopLeft, settings.CellSize); state.Grid[(int)index.X, (int)index.Y] = p; state.ActivePoints.Add(p); state.Points.Add(p); added = true; } }