# Stern erstellen



## //Sebastian (5. Apr 2022)

Ich habe die Aufgabe einen Stern zu erstellen welcher in etwa so aussieht. 
Anfangs wirkte die Aufgabe recht trivial und ich erstellte das unten angehängte Dokument. 
Jedoch hänge ich gerade etwas fest, da mein Programm aus einem mir unerfindlichen Grund es nicht schafft den Stern gleichmäßig zu zeichnen.
Dementsprechend sieht mein Stern aus wie der unten stehende.


Funktioniert mein Ansatz einfach nicht oder übersehe ich einen Störfaktor der mir mein  Ergebnis zerschießt...


----------



## //Sebastian (5. Apr 2022)

[CODE lang="java" title="meinStern.java"]package Blatt04;
import java.awt.*;
import javax.swing.JFrame;

public class meinStern extends JFrame {

    public static int width = 1024;
    public static int height = 1024;

    public meinStern(){
          super();
          setDefaultCloseOperation(EXIT_ON_CLOSE);
          this.setSize(1024,1024);
          this.setTitle("meinStern" + this.getClass().getName());
          this.setVisible(true);
    }

    public static void main(String[]args){
        new meinStern();
    }

    public void paint(Graphics g){
        /* Löschen des Fensterinhalts (wichtig bei erneutem Zeichnen): */
        g.clearRect(0, 0, this.getWidth(), this.getHeight());


        this.Stern(g); // Aufruf der selbst programmierten Methode
    }

    public void Stern(Graphics g){
        int Gradschritte = 10;
        int radius = 200;
        int[] xKoordinate = new int[100];
        int[] yKoordinate = new int[100];

        xKoordinate[0] = this.getWidth()/2;
        yKoordinate[0] = this.getHeight()/2;
        for(int zaehler=1;zaehler<=(360/Gradschritte);zaehler++) {

            xKoordinate[1] = (int) (xKoordinate[0] + radius*Math.sin(zaehler*Gradschritte));
            yKoordinate[1] = (int) (yKoordinate[0] + radius*Math.cos(zaehler*Gradschritte));
            g.setColor(Color.BLUE);
            g.drawLine(xKoordinate[0],yKoordinate[0],xKoordinate[1],yKoordinate[1]);


            xKoordinate[2] = (int) (xKoordinate[0] + (radius/2)*Math.sin(zaehler*Gradschritte+Gradschritte/2));
            yKoordinate[2] = (int) (yKoordinate[0] + (radius/2)*Math.cos(zaehler*Gradschritte+Gradschritte/2));
            g.setColor(Color.RED);
            g.drawLine(xKoordinate[0], yKoordinate[0], xKoordinate[2], yKoordinate[2]);


        };



    }
}
[/CODE]


----------



## KonradN (5. Apr 2022)

So auf den ersten Blick würde ich sagen, dass es daran liegen kann, dass Du in sin/cos die Angabe in Grad machst.






						Math (Java SE 17 & JDK 17)
					

declaration: module: java.base, package: java.lang, class: Math



					docs.oracle.com
				





> Parameters:
> a - an angle, in radians.



Daher musst Du entweder generell die Werte umstellen oder einfach die Gradzahl Umrechnen.


----------



## Robert Zenz (5. Apr 2022)

Klassischer Fehler, Math.sin(double) und verwandte Methoden akzeptieren Radiant, nicht Grad.

*Edit:* Verflixt noch eins, koenntest du bitte fuer uns andere was uebrig lassen.


----------



## //Sebastian (5. Apr 2022)

Vielen Dank


----------

