Erweiterung Konsole + Graphische Ausgabe

Frohes Neues liebe Experten!

Wuerde gern folgendes insofern erweitern, dass die Umwandlung von Kartesischen Koordinaten in Polarkoordinaten durch Eingabe von x und y Werten in der Konsole passiert und dies dann auch noch graphisch ausgegeben wird, meint:

1.) Text in der Konsole: “Geben Sie die zugehörige x-Koordinate ein”
2.) Usereingabe
3.) Text in der Konsole: “Geben Sie die zugehörige y-Koordinate ein”
4.) Usereingabe
5.) Umrechnung in Polarkoordinaten und graphische Wiedergabe der Anzeigewerte

Kann mir da jemand weiterhelfen?!?!

Besten Dank im Voraus!

Gruss Mike

Hier das Gerüst:

public class Koordinaten
{
 /**
 * Laenge des Vektors
 */
 public static double vektorWinkel(double x, double y)
 {
  if(x > 0)
  {
   if(y>=0)
   {
      return Math.atan(y/x);
   }
   else
   {
       return Math.atan(y/x + 2*(Math.PI));
   }
  }
  else if(x < 0) 
  {
      return Math.atan(y/x + Math.PI);
  }
  else
  {
     if(y > 0)
     {
    return Math.PI * 1/2;
    }
     else if(y < 0)
    {
    return 3 * Math.PI / 2;
    }
    else
    {
    return 0;
    }
  }
 }
 
 /**
 * Formel für Laenge eines Vektors
 * @param x x-Koordinate
 * @param y y-Koordinate
 * @return Den Radius
 */
 public static double vektorLaenge(double x, double y)
 {
 return Math.sqrt(x*x + y*y);
 }
 
 /**
 * Berechnung cosinus
 * @return cos alpha
 */
 public static double polarZuKartesischX(double alpha, double delta)
 {
 return delta * Math.cos(alpha);
 }
 
  /**
 * Berechnung cosinus
 * @return cos alpha
 */
 public static double polarZuKartesischY(double alpha, double delta)
 {
 return delta * Math.sin(alpha);
 }
  
 public static void printErgebnisKoordinaten(double x, double y)
 {
 System.out.println("Die Polarkoordinaten fuer die kartesischen Koordinaten
 x= " + x + "und y= " + y);
 System.out.println("sind alpha= " + vektorWinkel(x,y) + " und delta= " + vektorLaenge(x,y));
 }
 
  public static void printErgebnisKoordinatenXY(double alpha, double delta)
 {
 System.out.println("Die kartesischen Koordinaten fuer die Polarkoordinaten
 alpha= " + alpha + "und delta= " + delta);
 System.out.println("sind x= " + polarZuKartesischX(alpha,delta) + " und y= " + polarZuKartesischY(alpha,delta));
 }
 
 public static void main(String[] args)
 {
 printErgebnisKoordinaten(3.0, 4.0);
 
 printErgebnisKoordinatenXY(0.9272952180016122, 5.0);
 }

}```

Ganz pragmatisch: Eine Klasse erstellen, die sowas zeichnen kann

public class PolarPanel extends JPanel
{
    private float valuesRequiredForPainting.... // Die Polarkoordinaten und so...
    public void setValuesRequiredForPainting(...) { ... }

    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        g.drawLine(...);
    }
}

und die dann in einem Frame anzeigen:

class PolarPanel extends JPanel
{
    public static void showIt(final float values)
    {
        SwingUtilities.invokeLater(new Runnable()
        {
            public void run()
            {
                JFrame frame = new JFrame();
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // oder dispose...
                PolarPanel polarPanel = new PolarPanel();
                polarPanel.setValuesRequiredForPainting(values);
                frame.getContentPane().add(polarPanel);
                frame.setSize(300,300);
                frame.setVisible(true);
            }
        });
    }

    ....
}

Marco ein Tipp, wenn du statt Code java schreibst dann passt auch das Syntaxhighlight :wink:

Danke Marco!
Ganz pragmatische Fragen:

Wie bind ich das ein?! Und wie kann ich erreich das x und y Werte der kartesischen Koordinaten über die Konsole vom User abgefragt werden?!

Man merkt es und ganz ehrlich, ich hab nahzu keinen Plan von Java…

Verwend die Eclipse Plattform zur Eingabe.

Vielen lieben Dank

Mike

Für die Eingaben in der main sowas wie

Scanner scanner = new Scanner(System.in);
float x = scanner.nextFloat();
float y = scanner.nextFloat();
...

Um die Ergebnisse anzuzeigen: Die schon beschriebene Klasse “PaintPanel” mit ins Projekt nehmen, dann sollte man von der main aus

PaintPanel.showIt(values...);

aufrufen können.