Robert E. Lee: Applet zoomen

Beitrag lesen

Sieht gut aus nur bekomme ich es nicht zum Laufen. Beim erstellen der class gibt mir javac immer Fehler aus.

Quelltext:

import java.awt.*;
import java.applet.Applet;

public class quadratischeIteration extends Applet
{
   // Deklaration und Initialiserung

private static final long serialVersionUID = 1L;
   final int breite = 500, hoehe = 500;                 // Zeichenfläche
   final int vertikalerUrsprung = 490,horizontalerUrsprung = 10;   // Position des Ursprungs
   double pixelProEinheit = 450;                       // Pixel pro Einheit
   double a = 1.8;               // Faktor a der Gleichung
   int horizontalerPunkt = 0, vertikalerPunkt = 0;      // Koordinaten des neuen Punktes
   int horizontalerPunktAlt = 0, vertikalerPunktAlt = 0;     // Koordinaten des letzten Punkte
   double horizontalerGleitpunkt = 0, vertikalerGleitpunkt = 0;   // Koordinaten des neuen Punktes für die Lotgeraden
   double horizontalerGleitpunktStart = 0.1, vertikalerGleitpunktStart = 0; // Koordinaten für die Lotgeraden
   int hoechsterLauf = 300;             // Anzahl der Schleifen
   int aktuellerLauf = 1;             // Schleifenzähler

FlowLayout g1 = new FlowLayout(FlowLayout.CENTER);     // Objekt wird gebildet

public void setFaktor(double faktor)
   {                  // wird aufgerufen aus der HTML
      a = faktor;
     repaint();                // neu zeichnen
   }

public void setIterationen(int iterations)
   {                  // wird aufgerufen aus der HTML
      hoechsterLauf = iterations;
     repaint();                // neu zeichnen
   }

public void init ()
   {
    setLayout(g1);             // Layout wird auf den Bildschirm gezeichnet
   }

public void paint (Graphics g)
   {                  // alles wird gezeichnet (Koordinatensystem, Parabel, Winkelhalbierende, Näherung an den Schnittpunkt)

int x0, y0, x1, y1;             // x- und y-Koordinaten zum Zeichnen der Parabel
      double x, y;

// Zeichnen des Koordinatensystems

g.setColor(Color.black);                      // Farbe schwarz zum Zeichnen

g.drawLine(0,vertikalerUrsprung,breite,vertikalerUrsprung); // x-Achse und die Pfeile
      g.drawLine(breite,vertikalerUrsprung,breite-10,vertikalerUrsprung-3);
      g.drawLine(breite,vertikalerUrsprung,breite-10,vertikalerUrsprung+3);

g.drawLine(horizontalerUrsprung,0,horizontalerUrsprung,hoehe);      // y-Achse und die Pfeile
      g.drawLine(horizontalerUrsprung,0,horizontalerUrsprung-3,10);
      g.drawLine(horizontalerUrsprung,0,horizontalerUrsprung+3,10);

// Zeichnen der Parabel

x0 = 0;                                        // x-Wert am linken Rand (pixel)
      x = -horizontalerUrsprung/pixelProEinheit;                      // x-Wert berechnen
      y = a*x*(1-x);                                 // y-Wert berechnen
      y0 = (int)Math.round(vertikalerUrsprung-y*pixelProEinheit);  // y-Wert: typecasting und runden

while (x0 < breite)
      {                              // Kopfgesteuerte Schleife mit Abbruchbedingung: läuft solange, wie das Koordinatensystem breit ist
         x1 = x0+1;                                   // Nächster x-Wert (pixel)
         x = (x1-horizontalerUrsprung)/pixelProEinheit;          // x-Wert berechnen
         y = a*x*(1-x);                               // y-Wert berechnen
         y1 = (int)Math.round(vertikalerUrsprung-y*pixelProEinheit);  // y-Wert: typecasting und runden

if (y0 < vertikalerUrsprung) g.drawLine(x0,y0,x1,y1);     // Linie vom alten zum neu berechneten Punkt

x0 = x1;             // der neue Punkt wird zum alten Punkt
         y0 = y1;

}

// Winkelhalbierende vom Ursprung nach rechts oben

g.drawLine(horizontalerUrsprung,vertikalerUrsprung,horizontalerUrsprung+breite,vertikalerUrsprung-breite);

// Startpunkte der Lotgeraden werden festgesetzt

vertikalerGleitpunkt = vertikalerGleitpunktStart;
     vertikalerPunktAlt = (int)Math.round(vertikalerUrsprung-vertikalerGleitpunkt*pixelProEinheit);
     horizontalerGleitpunkt = horizontalerGleitpunktStart;
     horizontalerPunktAlt = (int)Math.round(horizontalerGleitpunkt*pixelProEinheit)+horizontalerUrsprung;
     // Iterationen für das Näherungsverfahren

aktuellerLauf = 1;             // aktuellerLauf muss auf 1 zurückgesetzt werden, da sonst die Iteration bei repaint() nicht ausgeführt wird

while (aktuellerLauf <= hoechsterLauf)
     {                 // solange bis hoechsterLauf größer als der aktuellerLauf ist

if (aktuellerLauf % 2 != 0)          // Bedingung: ist die aktuelle Laufzahl ungerade -> vertikaler Strich
      {
       // vertikale Lotgerade

vertikalerGleitpunkt = a*horizontalerGleitpunkt*(1-horizontalerGleitpunkt);
       vertikalerPunkt = (int)Math.round(vertikalerUrsprung-vertikalerGleitpunkt*pixelProEinheit);
       horizontalerPunkt = (int)Math.round(horizontalerGleitpunkt*pixelProEinheit)+horizontalerUrsprung;
       g.drawLine(horizontalerPunktAlt,vertikalerPunktAlt,horizontalerPunkt,vertikalerPunkt);

// berechnete Werte werden zu Ausgangspunkten der horizontalen Lotgerade

vertikalerPunktAlt = vertikalerPunkt;
       horizontalerPunktAlt = horizontalerPunkt;
      }

else               // Bedingung: sonst -> horizontaler Strich
     {
       // horizontale Lotgerade

horizontalerGleitpunkt = vertikalerGleitpunkt;
       vertikalerPunkt = (int)Math.round(vertikalerUrsprung-vertikalerGleitpunkt*pixelProEinheit);
       horizontalerPunkt = (int)Math.round(horizontalerGleitpunkt*pixelProEinheit)+horizontalerUrsprung;
       g.drawLine(horizontalerPunktAlt,vertikalerPunktAlt,horizontalerPunkt,vertikalerPunkt);

// berechnete Werte werden zu Ausgangspunkten der vertikalen Lotgerade

vertikalerPunktAlt = vertikalerPunkt;
       horizontalerPunktAlt = horizontalerPunkt;
      }

aktuellerLauf+=1;            // Iterationszähler inkrementieren
     }

}

}