Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2005 Teil von Dezember

SELFHTML Forumsarchiv
Applet zoomen

Informationsseite
  1. Seite (JAVASCRIPT) Applet zoomen von Robert E. Lee, 30. 12. 2005, 12:33
    • Seite (JAVA) Applet zoomen von Christoph Schnauß, 30. 12. 2005, 15:18
      • Seite (JAVASCRIPT) Applet zoomen von Robert E. Lee, 30. 12. 2005, 15:49
        • Seite (JAVASCRIPT) Applet zoomen von Christoph Schnauß, 30. 12. 2005, 16:06
nach unten

Applet zoomen

Die folgende Nachricht zum Thema stammt von: Robert E. Lee, 30. 12. 2005, 12:33

Hallo,

ich habe ein Applet für quadratische Iterationen und gebe dieses als eine Grafik in einem Koordinatensystem wieder. Da die geraden bei 300 Iterationen jedoch sehr nah aneinander liegen würde ich gerne zoomen.
Ich habe bis lang aber immer nur Quellcode zum zoomen von Bildern (jpg, etc.) gefunden.

Hoffe jemand von euch kann mir helfen.

Da dies meine erste Java-Arbeit ist weiß ich nicht ob ihr hierfür noch Informationen benötigt. Also bitte einfach Bescheid geben dann.

Vielen Dank schon mal
Mühle

nach obennach unten

Applet zoomen

Die folgende Nachricht zum Thema stammt von: Christoph Schnauß, 30. 12. 2005, 15:18

hallo,

»» Da die geraden bei 300 Iterationen jedoch sehr nah aneinander liegen würde ich gerne zoomen.

Ich habe für eine vergleichbare Sache folgendes im Einsatz:
public boolean mouseDown(java.awt.Event evt, int xm, int ym) {
    int zoom = 2;
    double xn = x0+xm/(double)breite*(x1-x0);
    double yn = y0+ym/(double)hoehe*(y1-y0);
    double xw = x1-x0;
    double yw = y1-y0;
    xw /= zoom*2;
    yw /= zoom*2;
    x0 = xn-xw;
    x1 = xn+xw;
    y0 = yn-yw;
    y1 = yn+yw;
    max = (int)(max * 1.25);
    thread = new Thread(this);
    thread.start();
    return true;
  }


Die Zoomfunktion ist hier an das Ereignis "Maustaste wird gedrückt" gekoppelt.


Grüße aus Berlin

Christoph S.
--
Visitenkarte

ss:| zu:) ls:& fo:) va:) sh:| rl:|

nach obennach unten

Applet zoomen

Die folgende Nachricht zum Thema stammt von: Robert E. Lee, 30. 12. 2005, 15:49

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
     }

   }


}

nach obennach unten

Applet zoomen

Die folgende Nachricht zum Thema stammt von: Christoph Schnauß, 30. 12. 2005, 16:06

hallo,

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

Kann ich nicht nachvollziehen. Ich habe eben mal schnell deinen unveränderten Quelltext übernommen und kompiliert. Das geht fehlerfrei, nur ist die Zoomfunktion wirkungslos. Beispielseite findest du unter http://www.christoph-schnauss.de/test/test.htm, im Verzeichnislisting findest du sowohl die class- wie auch die java-Datei.

Grüße aus Berlin

Christoph S.
--
Visitenkarte

ss:| zu:) ls:& fo:) va:) sh:| rl:|

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2005 Teil von Dezember

© 1998-2006 Seite Impressum, Software: Classic Forum