Ich möchte Sterne gleichmäßig streuen, um einen Hintergrund des nächtlichen Himmels in einer UIView darzustellen, basierend auf der Breite und Höhe der UIView. Jeder Stern muss mindestens 20 Pixel voneinander entfernt sein.Wie kann ich Punkte gleichmäßig verteilen, ohne sich zu überlappen?
Ich habe Folgendes versucht, um die X- und Y-Punkte zu generieren, aber es ist sehr ineffizient und endet mit dem Einfrieren der App, weil zu oft die zufällig generierten Zahlen denen im bestehenden Array zu ähnlich sind, so dass es unendlich wiederholt .
func generateRandomNumber(maxValue: UInt32, uniquePoints: Set<Int>) -> Int {
let randomNumber = Int(arc4random_uniform(maxValue))
for point in uniquePoints {
if(abs(randomNumber - point) < 20) {
return generateRandomNumber(maxValue, uniquePoints)
}
}
return randomNumber
}
Gibt es eine effizientere Möglichkeit, dies zu tun?
[Generierung von zufälligen Punkten mit definierten Min- und Max-Distanzen] (https://stackoverflow.com/questions/8930796/generative-random-points-with-defined-minimum-and-maximum- distance) | [Wählen Sie zufällige Punkte innerhalb des Gitternetzes, um die Mindest-/Höchstdistanzanforderungen zu erfüllen] (https://gamedev.stackexchange.com/questions/96586/how-to-select-random-points-within-grid-meeting-min-max-distance- Anforderungen-fr) –