UIView의 너비와 높이를 기반으로 밤하늘 배경을 나타내는 별을 균일하게 분산시키고 싶습니다. 각 별은 적어도 20 픽셀 떨어져 있어야합니다.어떻게 서로 겹치지 않고 점들을 균등하게 분산시킬 수 있습니까?
나는 X와 Y 포인트를 생성하기 위해 다음을 시도했지만 매우 비효율적이며 무작위로 생성 된 숫자가 기존 배열의 숫자와 너무 비슷하기 때문에 응용 프로그램이 멈추는 결과를 낳습니다. .
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
}
더 효율적인 방법이 있습니까?
[최소 및 최대 거리가 정의 된 임의 지점 생성] (https://stackoverflow.com/questions/8930796/generating-random-points-with-defined-minimum-and-maximum-distance) | [그리드 회의 최소/최대 거리 요구 사항 내 임의의 지점 선택] (https://gamedev.stackexchange.com/questions/96586/how-to-select-random-points-within-grid-meeting-min-max-distance- requirements-fr) –