У меня есть несколько прямоугольников, и я пытаюсь создать случайную точку, которая не находится ни в одном из них. Я создал метод, чтобы сделать это, но это, кажется, что это вызывает мое приложение к замораживанию, потому что он должен пройти через большое количество точек перед генерацией действительной точки:java: создать случайную точку, которая не находится внутри прямоугольника
public Point getLegalPoint() {
Random generator = new Random();
Point point;
boolean okPoint = true;
do {
point = new Point(generator.nextInt(975), generator.nextInt(650));
for (int i = 0; i < buildingViews.size(); i++) {
if (buildingViews.get(i).getBuilding().getRectangle()
.contains(point)) {
okPoint = false;
break;
}
}
} while (okPoint == false);
return point;
}
Есть ли что-то, что я делаю неправильно, или есть более эффективный способ сделать это, чтобы он не заморозил мое приложение?
Предполагаю, что вы хотите создать точку INSIDE прямоугольником R1, который является ВНЕШНИМ другим прямоугольником R2. Если это так, вы должны сообщить нам относительные размеры R1 R2 и если R2 находится внутри R1 – leonbloy
Представьте выполнение этого кода, если первая итерация цикла for устанавливает «okPoint = false». Когда он снова установлен в значение true? – nos
Каков размер прямоугольника? Я имею в виду, что если это очень близко к 975x650, тогда вероятность низкая, и вам потребуется много итераций. – rodrigoap