package mathekurven; import java.awt.*; import java.awt.event.*; import java.applet.*; public class kurven extends Applet { boolean isStandalone = false; /**Parameterwert holen*/ public String getParameter(String key, String def) { return isStandalone ? System.getProperty(key, def) : (getParameter(key) != null ? getParameter(key) : def); } /**Das Applet konstruieren*/ public kurven() { } /**Das Applet initialisieren*/ public void init() { try { jbInit(); } catch(Exception e) { e.printStackTrace(); } } /**Initialisierung der Komponenten*/ private void jbInit() throws Exception { this.setBackground(Color.white); } /**Applet-Information holen*/ public String getAppletInfo() { return "Applet-Information"; } /**Parameter-Infos holen*/ public String[][] getParameterInfo() { return null; } int Zeichenbreite,Zeichenhoehe; // Groesse des Zeichenbereichs final int XNULL = 30; // Konstanten fuer Nullpunkte int ynull = 320; int defbereich = 10, xlang= 300; // x-Achse int wertebereich = 10, ylang = 300;// y-Achse int abx, aby; // Abstaende void init_beschriftung(Graphics g){ // Initalisierung Beschriftung des Applets int s_start,s_lang; String s; // Variable fuer String Rectangle r = g.getClipBounds(); // Groesse des Zeichenbereichs Zeichenbreite=r.width; // Breite ermitteln Zeichenhoehe=r.height; // Hoehe ermitteln s = "Zeichengroesse: Breite= "+Integer.toString(r.width)+" Hoehe= "+Integer.toString(r.height); s_lang= g.getFontMetrics().stringWidth(s); // Breite des Stings ermitteln s_start = (Zeichenbreite-s_lang)/2; // Sting soll zentriert werden, den g.setColor(Color.black); g.drawString(s,s_start,20); // Ueberschrift ausgeben xlang= Zeichenbreite-50; // xlang aus Zeichenbreite ermitteln ylang= Zeichenhoehe-50; // ylang aus Zeichenbreite ermitteln ynull= ylang+20; // Nullpunkt fuer y automatisch setzen abx = xlang/(defbereich+1); // x-Abstand ausrechnen aby = ylang /(wertebereich+1); // y-Abstand ausrechnen } double fun(double x){ // Hier ist die zu berechnende Funktion //return x*x/8.0-0.4*x; x=x-3; return x*x/10.0; } void koordinatensystem (Graphics g){ int i; // Laufvariable g.setColor(Color.black); g.drawLine(XNULL,ynull,XNULL+xlang,ynull);// x-Achse g.drawLine(XNULL,ynull,XNULL,ynull-ylang);// y-Achse g.drawLine(XNULL+xlang,ynull,XNULL+xlang-4,ynull+4);// x-Pfeil g.drawLine(XNULL+xlang,ynull,XNULL+xlang-4,ynull-4);// x-Pfeil g.drawLine(XNULL,ynull-ylang,XNULL-4,ynull-ylang+4);// y-Pfeil g.drawLine(XNULL,ynull-ylang,XNULL+4,ynull-ylang+4);// y-Pfeil g.setColor(Color.blue); for (i=0; i <= defbereich; i++){ // x-Achse bemassen g.drawLine(XNULL+i*abx,ynull+5,XNULL+i*abx,ynull-5); g.drawString(Integer.toString(i),XNULL+(i*abx)-3,ynull+20); } for (i=0; i <= wertebereich; i++){ // y-Achse bemassen g.drawLine(XNULL-5,ynull-i*aby,XNULL+5,ynull-i*aby); g.drawString(Integer.toString(i),XNULL-20,ynull-i*aby+3); } } void plotter(Graphics g){ // Funktion plotten (zeichnen) g.setColor(Color.red); double aufloesung= 0.1; // die Aufloesung der x-Achse double x,y; // funktionsvariable int px,py,oldx,oldy; // Hilfsvariablen zur Plotpunktberechnung y= fun(0); oldx= (int) Math.round(0*abx) ; // Pixelposition in x-Achse oldy= (int) Math.round(y*aby) ; // Pixelposition in y-Achse for (x=0+aufloesung;x<=defbereich;x=x+aufloesung){ y= fun(x); px= (int) Math.round(x*abx) ; // Pixelposition in x-Achse py= (int) Math.round(y*aby) ; // Pixelposition in y-Achse g.drawLine(XNULL+oldx,ynull-oldy,XNULL+px,ynull-py); oldx = px; oldy = py; } } public void paint(Graphics g){ // wird bei Start des Applets aufgerufen init_beschriftung(g); koordinatensystem(g); plotter(g); } }