Swing Zeichnung wird nicht richtig dargestellt

Alex2013

Bekanntes Mitglied
Hey Leute,

ich versuche im Augenblick, in einem kleinen Übungsprogramm verschiedene Funktionen bzw. "Funktions"-graphen darzustellen.
Bei dem folgenden Graphen wird dieser jedoch nicht wie gewünscht gezeichnet.
Es soll für den Anfang so aussehen, dass die Linie bis zur Koordinatenkreuzmitte runter geht, sprich den Punkt 0,0 berührt und anschließend wieder nach oben geht, bis zum Punkt "100",0.
Ich habe jetzt einige meiner Meinung nach logische Operationen durchgeführt und zeichnen lassen. Jedoch führte noch keine zum gewünschten Ergebnis(für den Anfang). ... Später soll es wie eine Parabel aussehen. Zunächst soll aber erst mal die Anfangszeichnung richtig dargestellt werden.

Hier zwei Versuche, wo ist mein Denkfehler bzw. wie kann ich es richtig darstellen lassen(gerne auch in Parabelform):
 

Anhänge

  • Zeichnen nicht richtig.jpg
    Zeichnen nicht richtig.jpg
    91,2 KB · Aufrufe: 22
  • Zeichnen nicht richtig2.jpg
    Zeichnen nicht richtig2.jpg
    85,4 KB · Aufrufe: 33
Ich habe es jetzt zunächst wie folgt gelöst:

Java:
switch(auswahl)
        {
        case 0:
            int x1=getWidth()-getWidth();int y1=getHeight()-getHeight();int x2=x1++;int y2=y1++;
            int xEnde1=getWidth()/2;int yEnde1=getHeight()/2;int xEnde2=getWidth();int yEnde2=getHeight()-getHeight();
            g.drawLine(x1, y1, xEnde1, yEnde1);
            g.drawLine(xEnde1, yEnde1, xEnde2, yEnde2);

So wird es zumindest wie gewünscht dargestellt...
Gibt es hier nicht noch eine elegantere Variante mit for Schleife bzw. es als Parabel darstellen zu lassen?[/code]
 
Zuletzt bearbeitet von einem Moderator:
Also entweder du zeichnest EINE Linie von oben links nach 0,0 oder du zeichnest für jede Koordinate EINEN Punkt. Für jede Koordinate eine Linie zu zeichen ist irgendwie falsch...
 
Du solltest Dir vor Allem grundsätzliche Gedanken zum Zeichnen von Graphen machen bevor Du mit der GUI los legst.
Also Du willst 2 Dimensionale Funktionen ausgeben. Das bedeutet Du brauchst zuerst z.B. so etwas.
Code:
public interface Function2D {
    /**
     * Calculates function's result of value x.
     *
     * @param val
     * @return double
     */
    double calculate(double x);
}
Mittels so einem Interface kannst Du verschiedene Klassen erzeugen wie z.B. Polynom oder Sinus etc.
Eine 2D Funktion f(x): -> y bildet eben ein x auf ein y ab.
Damit kannst Du mittels einer Schleife einen Bereich jeder stetigen 2D Funktion mit Deiner GUI dann zeichnen lassen.
Wichtig ist ebenfalls das Verständnis dafür, dass du am Bildschirm immer nur ganzzahlige Koordinaten hast.
Deine Berechnungen müssen aber relle Zahlen berücksichtigen. Deswegen double.



Also entweder du zeichnest EINE Linie von oben links nach 0,0 oder du zeichnest für jede Koordinate EINEN Punkt. Für jede Koordinate eine Linie zu zeichen ist irgendwie falsch...
Der Graph wird definitiv falsch mittels Linien. Wenn z.B. Deine Schrittlänge 5 beträgt und f(x) = x^2
x= 0
 

Neue Themen


Zurück
Oben