我试图在一个大圆圈内绘制一堆具有不同深浅绿色的小圆圈以获得"灌木丛"外观,但是我不知道如何获得大圆圈形状内的所有小圆圈。我只能弄清楚如何在矩形内获取它。
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);
}
}
我想你必须在这里做一些几何,并验证随机生成的x和y坐标是否在你的圈内。正如你所说,在矩形内很容易(因为你只需检查 x>左,x+50 <右,y>顶部,y+50
我认为通过使用由Ellipse2D实现的Java 2D Shape.contains()有一个简单的出路。因此,从本质上讲,您为更大的圆创建了一个Ellipse2D.Double
或Ellipse2D.Float
的实例,然后在每次生成坐标时调用contains()
以在绘制它们之前检查它们是否在其中。
我认为您可以稍微更改颜色,并稍微增加/减少x,y,宽度和高度,以使它们位于较旧的圆圈内。新的椭圆形应该涂在旧的椭圆上。
选择应该作为大圆中心的点,并相对于该点绘制大圆(例如,使用 java.awt.geom.Ellipse2D)。
然后,您可以使用大圆的中心及其半径将其他较小的圆相对于圆周定位在圆周内。