我创建了一个程序,每次用户按下按钮时都会自动绘制许多多边形。多边形的点是使用随机函数自动生成的。问题在于,由于多边形的点是随机生成的,因此某些多边形与其他多边形重叠。如何避免这种情况,使显示的每个多边形都不会重叠?

.....
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);

}

最佳答案

在Polygon Collision上查看游戏编程Wiki:

http://gpwiki.org/index.php/Polygon_Collision

10-08 09:27
查看更多