Hallo,
für den Info-Unterricht, soll ich eine Perlenkette erstellen, die aus einer unbestimmten Zahl von Kreisen besteht. Diese sollen dann in einem Fenster so angezeigt werden, dass sie einen Kreis bilden und jeweils die benachbarte "Perle" berühren.
Mein Ansatz war es jetzt, die Perlen x und y Koordinate mithilfe des Sinussatzes zu berechnen - erfolglos, die Perlen sind nicht aneinander und auch nicht in meinem Fenster.
Ich bin für jede Lösung dankbar!
für den Info-Unterricht, soll ich eine Perlenkette erstellen, die aus einer unbestimmten Zahl von Kreisen besteht. Diese sollen dann in einem Fenster so angezeigt werden, dass sie einen Kreis bilden und jeweils die benachbarte "Perle" berühren.
Mein Ansatz war es jetzt, die Perlen x und y Koordinate mithilfe des Sinussatzes zu berechnen - erfolglos, die Perlen sind nicht aneinander und auch nicht in meinem Fenster.
Java:
package Seite113_Aufgabe3;
import java.awt.*;
import javax.swing.*;
public class Panel extends JPanel {
private static final long serialVersionUID = 1L;
KREIS k = new KREIS(40);
private KREIS[] Perle = new KREIS[(int)k.getAnzahl()];
private double xPos[] = new double[(int)k.getAnzahl() + 1];
private double yPos[] = new double[(int)k.getAnzahl() + 1];
private int a=0;
public Panel() {
setSize(1000,743);
setLayout(null);
setVisible(true);
repaint();
}
public void paintComponent(Graphics g) {
for(int i = 0; i < Perle.length; i++) {
Perle[i] = new KREIS(18*i,75,19,Color.RED);
g.setColor(Perle[i].getColor());
g.fillOval((int) Perle[i].getX(), (int) Perle[i].getY(), (int) Perle[i].getR(), (int) Perle[i].getR());
}
for(int j = 0 ; j <= 360 && a <k.getAnzahl(); j = j + 360/(int)k.getAnzahl()) {
xPos[a] = (k.getAnzahl()*Perle[0].getR()) / Math.sin(90)* Math.sin(j);
yPos[a] = Math.sqrt(xPos[a] * xPos[a] + k.getAnzahl()*Perle[0].getR() * k.getAnzahl()*Perle[0].getR())-1000;
System.out.println("X Positon: " + j +" Grad: " +xPos[a]);
System.out.println("yPositon: " + j +" Grad: " +yPos[a]);
a++;
}
for(int i = 0; i < k.getAnzahl(); i++) {
Perle[i] = new KREIS(xPos[i],yPos[i],19,Color.RED);
Perle[i].setX(xPos[i]);
Perle[i].setY(yPos[i]);
g.fillOval((int) Perle[i].getX(), (int) Perle[i].getY(), (int) Perle[i].getR(), (int) Perle[i].getR());
repaint();
}
}
}
Java:
package Seite113_Aufgabe3;
import java.awt.Color;
public class KREIS {
private double x,y,r;
private double anzahl;
private Color farbe;
public KREIS(double X,double Y,double R,Color Farbe) {
x = X; y = Y; r = R; farbe = Farbe;
}
public KREIS(double Anzahl) {
anzahl = Anzahl;
}
public void setX(double X) {
x = X;
}
public void setY(double Y) {
y = Y;
}
public void setR(double R) {
r = R;
}
public void setAnzahl(double A) {
anzahl = A;
}
public Color getColor() {
return farbe;
}
public void setColor(Color c) {
farbe = c;
}
public double getX() { return x; }
public double getY() { return y; }
public double getR() { return r; }
public double getAnzahl() { return anzahl; }
}
Ich bin für jede Lösung dankbar!