Voici ce que je veux accomplir pour les devoirs: Concevoir et implémenter un programme qui dessine des cercles, avec le rayon et l'emplacement de chaque cercle déterminés au hasard. Si un cercle ne chevauche aucun autre cercle, dessinez ce cercle en noir. Si un cercle chevauche un ou plusieurs cercles, dessinez-le en cyan. Utilisez un tableau pour stocker une représentation de chaque cercle, puis déterminez la couleur de chaque cercle. Deux cercles se chevauchent si la distance entre leurs points centraux est inférieure à la somme de leurs rayons.dessiner des cercles aléatoires, d'abord stocker les points dans un tableau
Voici le code que j'ai jusqu'à présent:
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);
}
}
Après avoir pris les conseils que je reçus et d'essayer de passer par cette étape par étape, j'ai fait beaucoup de progrès. Je suis coincé sur le dernier bit du projet, qui consiste à comparer les points centraux des cercles à la somme de leurs rayons pour déterminer si les cercles se chevauchent. Je pense que je peux utiliser la fonction math.sqrt pour les comparer, mais je ne suis pas sûr de savoir comment l'implémenter correctement. Je sais qu'une fois que je trouverai comment vérifier, s'ils se chevauchent (un booléen est vrai) alors je peindrai ce cercle dans Cyan. Si quelqu'un a quelque chose à dire, je serais vraiment reconnaissant, mais si je comprends pas, je sais que demander trop d'aide n'est pas bon. Merci beaucoup.
Ceci est le point de devoirs, pour faire le travail vous-même. –
Je ne sais pas comment procéder. Que feriez-vous si vous aviez lu dans votre livre tout ce qui avait trait à la tâche, vous aviez essayé de le demander à votre professeur et vous ne connaissez personne qui sait quoi que ce soit au sujet de Java? – Josh
Vous pouvez également utiliser un arbre R pour rechercher des intersections pour chaque cercle. S'il s'agit d'une classe de niveau d'entrée, vous feriez probablement mieux de le faire naïvement et de parcourir toute la liste à chaque fois que vous dessinez un cercle pour voir s'il croise d'autres cercles. –