如何在圆圈内画圆圈?

时间:2012-11-25 02:32:13

标签: java graphics awt geometry java-2d

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

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

3 个答案:

答案 0 :(得分:3)

我猜你必须在这里做一些几何,并验证随机生成的x和y坐标是否在你的圆圈内。如你所说,在矩形内很容易(因为你只检查x>左,x + 50&lt; right,y&gt; top,y + 50&lt; bottom),但是对于一个圆圈你必须使用{ {3}}并在实际执行fillOval()之前检查(x,y)和(x + 50,y + 50)是否在其中。

我认为您可以通过使用由equation of a circle实现的Java 2D Shape.contains()轻松解决问题。所以基本上你为更大的圆创建一个Ellipse2D.DoubleEllipse2D.Float的实例,然后在每次生成坐标时调用contains(),以便在绘制它们之前检查它们是否在其中。

答案 1 :(得分:0)

我认为你可以稍微改变颜色,稍微增加/减少x,y,宽度和高度,使它们在旧圆圈内。新椭圆形应涂在旧椭圆上。

答案 2 :(得分:0)

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

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