0

我试图在一个大圆圈内绘制一堆具有不同绿色深浅的小圆圈以获得“灌木”外观,但我不知道如何让所有小圆圈形状为一个大圆圈。我只能弄清楚如何在一个矩形内得到它。

public void paintComponent(Graphics g)
   {
      super.paintComponent(g);

      for(int i = 0; i < 1000; i++){
         int redV = (int) ((Math.random() * 100) + 27);
         g.setColor(new Color(red, red + 31, red - 15));

         int x = (int) ((Math.random() * 400) + 150);
         int y = (int) ((Math.random() * 500) + 200);

         g.fillOval(x, y, 50, 50);
      }
   }
4

3 回答 3

3

我想你必须在这里做一些几何,并验证随机生成的 x 和 y 坐标是否在你的圈内。如您所说,在矩形内很容易(因为您只需检查 x > left, x+50 < right, y > top, y+50 < bottom),但是对于圆,您必须使用圆的方程和检查 (x,y) 和 (x+50,y+50) 在实际执行之前是否在其中fillOval()

我认为您可以通过使用Ellipse2D实现的 Java 2D Shape.contains()有一个简单的出路。所以本质上你创建了一个更大的圆的实例,然后在每次生成坐标时调用,以在绘制它们之前检查它们是否在其中。Ellipse2D.DoubleEllipse2D.Floatcontains()

于 2012-11-25T02:44:23.633 回答
0

选择应该是大圆中心的点,并相对于它绘制大圆(例如使用java.awt.geom.Ellipse2D)。

然后,您可以使用大圆的中心及其半径将其他较小的圆也相对于该圆定位在圆周内。

于 2015-01-18T12:29:11.060 回答
0

我认为您可以稍微更改颜色,并稍微增加/减少 x、y、宽度和高度,以使它们位于较旧的圆圈内。新的椭圆形应该涂在旧的椭圆形上。

于 2012-11-25T02:34:50.780 回答