Я создал программу для рисования многих полигонов автоматически каждый раз, когда пользователь нажимает кнопку. Точки многоугольника генерируются автоматически с использованием случайной функции. Проблема в том, что, поскольку точки многоугольника были случайным образом сгенерированы, некоторые из многоугольников перекрываются с другим полигоном. Как я могу избежать этого, чтобы каждый отображаемый многоугольник не перекрывался?Как избежать перекрытия многоугольника
.....
List<Polygon> triangles = new LinkedList<Polygon>();
Random generator = new Random();
public void paintComponent(Graphics g) {
for(int i = 0; i < 10; i++) {
double xWidth = generator.nextDouble() * 40.0 + 10.0;
double yHeight = generator.nextDouble() * 40.0 + 10.0;
xCoord[0] = generator.nextInt(MAX_WIDTH);
yCoord[0] = generator.nextInt(MAX_HEIGHT);
xCoord[1] = (int) (xCoord[0] - xWidth);
xCoord[2] = (int) (xCoord[1] + (xWidth/2));
yCoord[1] = yCoord[0];
yCoord[2] = (int) (yCoord[1] - yHeight);
triangles.add(new Polygon(xCoord,yCoord, 3));
}
Graphics2D g2 = (Graphics2D) g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setStroke(new BasicStroke(1));
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1.00f));
g2.setPaint(Color.black);//set the polygon line
for (Polygon triangle : triangles) g2.drawPolygon(triangle);
Polygon[] triArray = triangles.toArray(new Polygon[triangles.size()]);
for (Polygon p:triArray) triangles.remove (p);
}
Итак, чтобы повторить (так что мне не нужно подробно читать код), вы последовательно создаете десятигранные многоугольники, и вы не хотите, чтобы они перекрывались? – Jacob
да. Размер моего JPanel составляет 600 * 600, я хочу, чтобы многоугольники отображались без перекрытия. – Jessy