绘制随机圆圈,首先将点存储在数组中

时间:2010-11-23 16:01:57

标签: java random drawing geometry

这就是我想要完成的功课: 设计并实现绘制圆的程序,每个圆的半径和位置随机确定。如果圆圈不与任何其他圆圈重叠,则将该圆圈绘制成黑色。如果圆圈与一个或多个圆圈重叠,请以青色绘制。使用数组存储每个圆的表示,然后确定每个圆的颜色。如果两个圆的中心点之间的距离小于它们的半径之和,则两个圆重叠。

这是我到目前为止的代码:

import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
import java.awt.*;
import java.awt.event.*;
import java.math.*;

public class RandomCircles extends JPanel
{
    private int[] sizeArray = new int [4];  // radius of each circle
    private int[] xArray = new int [4]; //array to store x coordinates of circles
    private int[] yArray = new int [4]; //array to store y coordinates of circles


    public RandomCircles()
    {
        Random r = new Random();

        for (int i = 0; i<xArray.length; i++){
            //random numbers from 1 to 20;
            xArray[i] = r.nextInt(200) + 1;
        }
        for (int i = 0; i<yArray.length; i++){
            yArray[i] = r.nextInt(200) + 1;
        }
        for (int i = 0; i<sizeArray.length; i++){
            sizeArray[i] = r.nextInt(100) +1;
        }

        setBackground (Color.white);
        setPreferredSize (new Dimension(300, 200));
    }

    //  Draws all of the circles stored in the array.

    public void paintComponent (Graphics page)
    {
        super.paintComponent(page);
        for (int i = 0 ;i<xArray.length; i++) //this is an iterator that draws the circles and checks for overlapping radii
        {
            for (math.sqrt((x1-x2)*((x1-x2))-((y1-y2)*(y1-y2));
            {//math.sqrt((x1-x2)*(x1-x2)-(y1-y2)*(y1-y2)), go back and read chapter 7
                page.fillOval(xArray[i], yArray[i], sizeArray[i], sizeArray[i]);
            }
        }
    }
    public static void main (String[] args)
    {
        JFrame frame = new JFrame ("Circles");
        frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);

        frame.getContentPane().add (new RandomCircles());

        frame.pack();
        frame.setVisible(true);
    }
}

在收到我收到的建议并尝试逐步完成后,我取得了很多进展。我被困在项目的最后一点,即将圆的中心点与它们的半径之和进行比较,以确定圆是否重叠。我认为我可以使用math.sqrt函数来比较它们,但我不确定如何正确实现它。我知道,一旦我弄清楚如何检查,如果它们重叠(布尔值为真),那么我将在青色中绘制该圆圈。如果有人有任何意见,我会非常感激,但我知道如果没有,我知道要求太多帮助并不好。非常感谢你。

2 个答案:

答案 0 :(得分:4)

  

我迷失了如何为圆的半径生成随机数....

首先,编写代码以创建一个具有固定位置和半径的圆。

然后展开:调用randomGenerator.nextInt()几次以获得位置和半径的随机值。

下一步:将其置于10次循环中

下一步:运行循环N次,再次从randomGenerator.nextInt()获得N

食谱:总是从最简单的例子开始(我怎么画圆圈?)。然后逐步扩展它。避免“我可以一次做所有事情。”

答案 1 :(得分:1)

您已经在生成随机int。现在您需要将值存储在数组中。

是的,只需将每个圈子与其他圈子进行比较,以确定它是否重叠。