Quadratische Funktion mit Java primitiv zeichnen.

Status
Nicht offen für weitere Antworten.

Shusi

Mitglied
Hi alle... ich google schon ewig rum und finde einfach keine Lösung meines Problems. Deshalb melde ich mich mal hier, vll kann ja jemand helfen..
Also: ich soll ein ganz simples Programm schreiben, mit dem ich eine vorgegeben quadratische Funktion zeichnen kann..

ich hab jetzt mal so rumgebastelt und bin zu folgendem ergebnis gekommen:

Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 25.09.2007
  * @author
  */

public class quadrat extends JFrame {
  // Anfang Variablen
     int frameWidth = 500;
     int frameHeight = 500;
     int i,j;
  // Ende Variablen

  public quadrat(String title) {
    // Frame-Initialisierung
    super("y=mx+b");
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { System.exit(0); }
    });

    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2 ;
    setLocation(x, y);
    Container cp = getContentPane();
    cp.setLayout(null);
    // Anfang Komponenten

    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Ereignisprozeduren


  int y;
  int a=1;
  int b=0;
  int c=0;
  int x;

  //      y=axq+bx+c
  
  
  public void paint(Graphics g){
    g.setColor(Color.white);
    g.fillRect(0,0,frameWidth,frameHeight);
    g.setColor(Color.black);
    g.drawLine(0,frameHeight/2,frameWidth,frameHeight/2);   // x-Achse
    g.drawLine(frameWidth/2,0,frameWidth/2,frameHeight);    // y-Achse
    
//    for (i=0; i<=frameWidth; i=i+10){                       // Punkte im
//      for (j=0; j<=frameHeight; j=j+10){                    // Koordinaten-
//        g.drawLine(i,j,i,j);                                // System
//      }
//
//    }
   
    do {
       x=0;
       y=a*x*x+b*x;
       g.drawLine(frameWidth/2,frameHeight/2-c,frameWidth/2+x,frameHeight/2-y);
       x=x+1;
    }     while (x!=100);


  }
  
  
  // Ende Ereignisprozeduren

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



das Rechteck habe ich nur gemalt, weil der sonst immer den Hintergrund von da, wo sich das Fenster öffnete, übernommen hatte.. das störte mich ^^


das Problem bei dem Text ist jetzt nur, dass er mir garnichts mehr zeichnet...
Wenn mir jemand helfen kann, dann bitte ;)
 

spong3bob

Aktives Mitglied
kleine anregung :D
(nicht getestet)
du schreibst eine Methode
Code:
public int getY(int x)
{
  return (int) (-1*a*x*x+b*x+c)+getHeight()/2;
}
und dann machst du im paint eine for schleife:
Code:
for(int i=0; i<getWidth(); i++)
{
    g.drawLine(i-getWidth()/2,getY(i-getWidth()/2),i-getWidth()/2+1,getY(i-getWidth()/2+1));
}
die schleife zeichnet dann bei einer weite des frames von 500 alle werte von -250 bis 250

das ganze wird denk ich mal ziemlich zusammenpicken... da kannst du dich dann mit einem skalierungsfaktor spielen...

hoffe du hast das prinzip verstanden...

ich gehe jedes pixel im frame durch (das -getWidth()/2 is, weil wir den ursprung genau in der mitte des Frames haben)
und berechne mir den zugehörigen y-wert an der stelle aus, und zeichne eine linie zum x-wert an der stelle x+1
 
M

Michael...

Gast
noch ne kleine Anmerkung:
Bei Swing Elementen überschreibt man nicht die paint-Methode sondern die paintComponent.
Ausserdem sollten innerhalb dieser Methode keine grossartigen Berechnungen durchgeführt werden. D.h. die Werte nach Möglichkeit vorher berechnen und speichern (Stichwort Collection)
 

anfänger15

Bekanntes Mitglied
bei den berechnungen gebe ich dir recht aber so wei ich weiß hat JFrame keine paintComponent sondern nur die von Container geerbte methode paint somit ist es eigentlich richtig(denke ich).


ein weiteres Problem das mir gerade aufgefallen ist, ist dass das KoordinatenSystem in Java in der linken oberen Ecke beginnt und man es erst in die "Mitte" verschieben muss, wenn man es so zeichnen will wie es Vorgeschlagen würde.

um das Koordinatensystem zu verschiebeneinfach das hier in die paint-methode einfügen
Code:
g.translate(getWidth()/2,getHeight()/2);
 

anfänger15

Bekanntes Mitglied
außerdem müßte die funktion getY wohl irgendwie so lauten:
Code:
  public int getY(int x)
{
  return (int) (-1*a*x*x+b*x-c);
 
}

meine funktion ist aber nicht ganz richtig da funktioniert b irgendwie nicht so ganz der Rest müßte aber gehen.



noch ein Tipp: vlt solltest du bei a ein double oder float benutzen da man meines wissens zahlen die >0 sind angeben muss damit die Parabell breiter wird
 

Shusi

Mitglied
Komme jetzt grade von der Arbeit.
Erstmal danke an alle für die Tipps, werde sie gleich mal testen ;)
 

Shusi

Mitglied
also.. danke nochmal an alle für die Tipps, es funktioniert jetzt alles...

der Quelltext sieht jetzt wie folgt aus :

Code:
  double a=1;
  int b=0;
  int c=0;


  //      y=axq+bx+c
  
        public int getY(int x)
{
  return (int) (-1*a*x*x+b*x-c);
}
  
  
  public void paint(Graphics g){
    g.setColor(Color.white);
    g.fillRect(0,0,frameWidth,frameHeight);
    g.setColor(Color.black);
    g.drawLine(0,frameHeight/2,frameWidth,frameHeight/2);   // x-Achse
    g.drawLine(frameWidth/2,0,frameWidth/2,frameHeight);    // y-Achse
    
    for (i=0; i<=frameWidth; i=i+10){                       // Punkte im
      for (j=0; j<=frameHeight; j=j+10){                    // Koordinaten-
        g.drawLine(i,j,i,j);                                // System
      }

    }
    g.translate(getWidth()/2,getHeight()/2);

    for ( int i=0;i<getWidth(); i++){
       g.drawLine(i-getWidth()/2,getY(i-getWidth()/2),i-getWidth()/2+1,getY(i-getWidth()/2+1));
    }



  }




Jetzt habe ich nur das Problem. dass ich noch nicht ganz verstanden habe, warum da
Code:
g.drawLine(i-getWidth()/2,getY(i-getWidth()/2),i-getWidth()/2+1,getY(i-getWidth()/2+1));


das -getWidth()/2 stehen muss, obwohl ich das Koord-System in die Mitte verlegt hab..
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Koordinatensystem zeichnen - Variablen merken? Quadratische Funktion zeichnen? Java Basics - Anfänger-Themen 5
J HILFE! Quadratische funktion programmieren Java Basics - Anfänger-Themen 3
N Quadratische Matrix inkl Summe Java Basics - Anfänger-Themen 8
R quadratische Gleichung Java Basics - Anfänger-Themen 23
K Quadratische Matrix um 90° drehen Java Basics - Anfänger-Themen 5
M Quadratische Gleichung Java Basics - Anfänger-Themen 6
B Quadratische Gleichung mit JAVA lösen Java Basics - Anfänger-Themen 5
F Quadratische Gleichungen Java Basics - Anfänger-Themen 6
Screen Kurvendiskussion Quadratische Gleichungen Java Basics - Anfänger-Themen 15
K Datentypen Quadratische Spirale Java Basics - Anfänger-Themen 6
S Quadratische Gleichung Java Basics - Anfänger-Themen 5
V Quadratische Gleichung Java Basics - Anfänger-Themen 20
O Quadratische Gleichung Problem?! Java Basics - Anfänger-Themen 7
G Frage wegen Quadratische Gleichung Java Basics - Anfänger-Themen 9
H Quadratische Matrix Java Basics - Anfänger-Themen 8
G quadratische Gleichung lösen Java Basics - Anfänger-Themen 2
E Hilfe bei rekursiver Funktion Java Basics - Anfänger-Themen 3
FunkyPhil94 Wert in einer Lambda Funktion erhöhen Java Basics - Anfänger-Themen 3
M Eine Funktion zuweisen Java Basics - Anfänger-Themen 3
V Die Funktion des neuen Schlüsselworts in Java Java Basics - Anfänger-Themen 1
M variable in anderer funktion aufrufen Java Basics - Anfänger-Themen 10
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
W GUI - JButton ohne Funktion? Java Basics - Anfänger-Themen 24
J Rekursive Funktion und return statement Java Basics - Anfänger-Themen 3
F Wie kann ich eine Funktion schreiben, die nur in bestimmten Fällen einen Wert zurückgibt? Java Basics - Anfänger-Themen 5
R Buttons ohne Funktion Java Basics - Anfänger-Themen 2
I Generische Funktion Java Basics - Anfänger-Themen 3
E Pervasive PSQL insert funktion geht nicht Java Basics - Anfänger-Themen 9
C Java Funktion: externe Daten vom Internet einbinden Java Basics - Anfänger-Themen 2
T Log Funktion erstellen Java Basics - Anfänger-Themen 1
M Wie kann ich eine Methode aus einem Interface in eine Klasse implementieren, so dass sie ihre Funktion ausführt? Java Basics - Anfänger-Themen 7
H Den Wert einer rekursiven Funktion bestimmen Java Basics - Anfänger-Themen 5
J In main() Datei geöffnet, von anderer Funktion beschreiben Java Basics - Anfänger-Themen 3
M toDouble Funktion Java Basics - Anfänger-Themen 3
Tino1993 Ellipse über draw Funktion ohne spur wandern lassen Java Basics - Anfänger-Themen 6
X Ackermannsche Funktion Java Basics - Anfänger-Themen 32
F Arrays: Mathematische Funktion Java Basics - Anfänger-Themen 19
P Dezimal zu Hexadezimalzahl Funktion Java Basics - Anfänger-Themen 5
S Verwenden von throw Exception an der Funktion Java Basics - Anfänger-Themen 2
M Arrays in Funktion Kopieren und Bearbeiten Java Basics - Anfänger-Themen 4
B Funktion mit mehreren Rückgabewerten aka Prozeduren? Java Basics - Anfänger-Themen 12
J Dynamisches Array durch split()-Funktion? Java Basics - Anfänger-Themen 3
D Funktion nur 1 Rueckgabewert Java Basics - Anfänger-Themen 9
M Wie lang eine Funktion/Methode? Java Basics - Anfänger-Themen 51
N den inhalt eines array per funktion ausgeben Java Basics - Anfänger-Themen 8
R Ackermann Funktion Java Basics - Anfänger-Themen 2
B Treetable (rekursive Funktion) aufbauen von Datenbank Java Basics - Anfänger-Themen 4
D Funktion zwei Arraylisten zu verleichen ob gleich funktioniert nicht Java Basics - Anfänger-Themen 26
N Abfragen eines Textes aus einem JTextField in Java, Funktion, CardLayout, Java Basics - Anfänger-Themen 2
T Rekursion Warum bricht meine Funktion nicht ab Java Basics - Anfänger-Themen 4
N Funktion funktioniert nicht immer Java Basics - Anfänger-Themen 6
E Contain-funktion überlisten Java Basics - Anfänger-Themen 4
J Division ohne Arithmetische Funktion Java Basics - Anfänger-Themen 2
S Funktion in Klasse auslagern Java Basics - Anfänger-Themen 4
J Problem mit Boolean bei Funktion! Java Basics - Anfänger-Themen 5
S Gibt es eine Funktion, die gewissermaßen eine Reihe von instanceOf() vereinheitlicht? Java Basics - Anfänger-Themen 19
D Nullstellen einer Funktion 3. Grades mit Horner Schema Java Basics - Anfänger-Themen 6
Aprendiendo Gibt es in der JAVA-API eine Funktion, die eine Dezimalzahl in eine binäre Zahl umwandelt? Java Basics - Anfänger-Themen 8
D Funktion gibt Dimension zurück Java Basics - Anfänger-Themen 11
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
T static String Variable wird nur beim ersten aufruf durch eine Funktion geändert. Java Basics - Anfänger-Themen 16
B Zugriffe in einer Klasse / Funktion Java Basics - Anfänger-Themen 9
J Array innerhalb einer Funktion mehrfach iniatilisieren Java Basics - Anfänger-Themen 4
T Lambda-Funktion bei Binärbäumen Java Basics - Anfänger-Themen 13
J Wie lässt sich der Konstruktor einer Klasse einer Funktion einer Klasse nutzen. Java Basics - Anfänger-Themen 4
M Thread.sleep() Funktion Java Basics - Anfänger-Themen 1
B OOP Wie benutze ich die Main Funktion richtig? Java Basics - Anfänger-Themen 10
H Nicht Static Funktion ohne Objekt aufrufen? Java Basics - Anfänger-Themen 6
K Methoden mit den Namen accept. Welche Funktion haben diese? Java Basics - Anfänger-Themen 2
E Compare-Funktion bei eigener Klasse Java Basics - Anfänger-Themen 4
S Threads run - Funktion wird nur einmal ausgeführt. Java Basics - Anfänger-Themen 8
B Anwender soll mathematische Funktion eingeben können, Einfachster Fnktionsplotter Java Basics - Anfänger-Themen 4
R If Funktion funktioniert nicht :P Java Basics - Anfänger-Themen 3
H Funktion in Hintergrund und Vordergrund ausführen Java Basics - Anfänger-Themen 11
S Funktion die mir fuer einen String eine Zahl zwischen 0.0 und 1.0 zurueckliefert..? Java Basics - Anfänger-Themen 9
S Funktion eines Stacks Java Basics - Anfänger-Themen 4
T Integer-Objekt über Hash-Funktion in Array ablegen Java Basics - Anfänger-Themen 1
S Separate Funktion für JUnit-Test Java Basics - Anfänger-Themen 3
D Keine Funktion bei "else" Java Basics - Anfänger-Themen 5
S timer funktion mit javax panel Java Basics - Anfänger-Themen 3
T Klassen Funktion in einem Funktionsaufruf definieren Java Basics - Anfänger-Themen 3
F Funktion eines JButton in einen Vektor verlagern Java Basics - Anfänger-Themen 4
X Eval-Funktion mit Variable Java Basics - Anfänger-Themen 2
T Screenreader Funktion Java Basics - Anfänger-Themen 2
S Wertetabelle einer Funktion f : R -> R Java Basics - Anfänger-Themen 1
P Methoden suche funktion die char wert ausgibt wenn man numerischen wert und radix angibt Java Basics - Anfänger-Themen 1
1 repaint() Funktion erzeugt Flackern Java Basics - Anfänger-Themen 33
J Taschenrechner Funktion Java Basics - Anfänger-Themen 18
R if funktion ohne else - Bedingung trifft nicht zu, ausgabe nicht nachvollziehbar Java Basics - Anfänger-Themen 7
shiroX OOP Java Funktion implementieren Java Basics - Anfänger-Themen 3
O Debug-Funktion mit Slick - Kleines Problem Java Basics - Anfänger-Themen 5
F Funktion immer zur vollen Stunde? Java Basics - Anfänger-Themen 3
S ResultSet close() in funktion nich möglich. Java Basics - Anfänger-Themen 8
C Meine erste Funktion Java Basics - Anfänger-Themen 12
J Funktion um JSON per Post senden/emfangen Java Basics - Anfänger-Themen 3
G OOP Aus Objekt auf Funktion der erzeuger Klasse zugreifen? Java Basics - Anfänger-Themen 11
D Binäre Suche für Integerarray in rekursiver Funktion Java Basics - Anfänger-Themen 5
M Interface als Konstruktorparameter nutzen, um Funktion zu plotten Java Basics - Anfänger-Themen 14
NR_EIGHT Benutzereingabe in Funktion verpacken Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben