Die Mathe-Redaktion - 24.04.2018 20:32 - Registrieren/Login
Auswahl
ListenpunktHome
ListenpunktAktuell und Interessant ai
ListenpunktArtikelübersicht/-suche
ListenpunktAlle Links / Mathe-Links
ListenpunktFach- & Sachbücher
ListenpunktMitglieder / Karte
ListenpunktRegistrieren/Login
ListenpunktArbeitsgruppen
ListenpunktSchwätz / Top 15
ListenpunktWerde Mathe-Millionär!
ListenpunktAnmeldung MPCT Juli
ListenpunktFormeleditor fedgeo
Schwarzes Brett
Aktion im Forum
Suche
Stichwortsuche in Artikeln und Links von Matheplanet
Suchen im Forum
Suchtipps

Bücher
Englische Bücher
Software
Suchbegriffe:
Mathematik bei amazon
Naturwissenschaft & Technik
In Partnerschaft mit Amazon.de
Kontakt
Mail an Matroid
[Keine Übungsaufgaben!]
Impressum

Bitte beachten Sie unsere Nutzungsbedingungen, die Distanzierung, unsere Datenschutzerklärung und
die Forumregeln.

Sie können Mitglied werden oder den Newsletter bestellen.

Der Newsletter Okt. 2017

Für Mitglieder
Mathematisch für Anfänger
Wer ist Online
Aktuell sind 579 Gäste und 21 Mitglieder online.

Sie können Mitglied werden:
Klick hier.

Über Matheplanet
 
Mathematik: Ein kleines Programm zum Zeichnen des Apfelmännchens in Java
Freigegeben von matroid am So. 03. Dezember 2017 21:19:56
Verfasst von Delastelle -   328 x gelesen [Gliederung] [Statistik] Druckbare Version Druckerfreundliche Version
Software

\(\begingroup\)
Leider wurden das DOS-Programm Fractint und das Windows-Programm Winfract nicht mehr weiterentwickelt. Um trotzdem Fraktale zu erzeugen, habe ich hier ein Java-Programm zur Erzeugung des Apfelmännchens. Im Anschluss noch einige Fraktale, die mit Fractint erzeugt wurden.

Teil 1



Falls man kein Fractint oder Winfract(läuft nur unter älteren Windows-Versionen wie Windows XP) zur Verfügung hat hier ein Java-Programm für das Apfelmännchen.

Der Aufruf des Java-Programms erfolgt so:
javac mandPanel.java
javac mandFrame.java
javac mand.java
java mand
Java
import javax.swing.JFrame;
public class mand
{  public static void main(String[] args)
   {
   int[][] feld = new int[1500][1000];
   int l ,n1, n2, grenze;
   double a,b,s,u,v,x,xl,x2,y,y2,dx,dy;
   double xmin,xmax,ymin,ymax,p,q;
   int k;
 
   // xmin = -1.5; xmax = 1; ymin = -1.25; ymax = 1.25;
   // xmin=1; xmax=-2.8; ymin=1.5; ymax=-1.5; // Voelz Nr.1 -> alle Vorzeichen gewechselt
   // xmin=-0.7; xmax=-1.0; ymin=0.3; ymax=0.1; // Voelz Nr.2 -> alle Vorzeichen gewechselt
   // xmin =  -0.74; xmax=-0.79; ymin=0.135; ymax=0.025; // Voelz Nr.3 -> alle Vorzeichen gewechselt
   // xmin =  -0.74; xmax=-0.77; ymin=0.12; ymax=0.097; // Voelz Nr.4 -> alle Vorzeichen gewechselt
   // xmin =  -0.741; xmax=-0.749; ymin=0.116; ymax=0.11; // Voelz Nr.5 -> alle Vorzeichen gewechselt
   // xmin =  -0.745; xmax=-0.748; ymin=0.1163; ymax=0.114; // Voelz Nr.6 -> alle Vorzeichen gewechselt
   // xmin =  -0.7445; xmax=-0.7459; ymin=0.1132; ymax=0.11215; // Voelz Nr.7 -> alle Vorzeichen gewechselt
   // xmin =  -0.74515; xmax=-0.7455; ymin=0.1131; ymax=0.1129; // Voelz Nr.8 -> alle Vorzeichen gewechselt
   // xmin =  -0.74573; xmax=-0.74545; ymin=0.113018; ymax=0.11298; // Voelz Nr.9 -> alle Vorzeichen gewechselt
   xmin =  -0.74542; xmax=-0.745445; ymin=0.113016; ymax=0.112999; // Voelz Nr.10 -> alle Vorzeichen gewechselt
 
   n1 = 1500; // 640, 1500
   n2 = 1000; // 480, 1000
   grenze = 1000;  
 
   System.out.println("xmin = " + xmin);
   System.out.println("xmax = " + xmax);
   System.out.println("ymin = " + ymin);
   System.out.println("ymax = " + ymax);
 
   System.out.println("n1 = " + n1);
   System.out.println("n2 = " + n2);
   dx = (xmax-xmin)/n1;
   dy = (ymax-ymin)/n2;
 
  for(int i = 0; i < n1; i++)
  {
    for(int j = 0; j < n2; j++)
    {  p = xmin+i*dx;
       q = ymin+j*dy;
      a = p;
      b = q;
      x = a;
      y = b;
      k = 0;
      s = 1;
      while ((s<1000) && (k<grenze))
      {  xl = x; k = k+1;
        x2 = x * x;
        y2 = y * y;
        x = x2 - y2 + a;
        y = 2 * xl * y + b;
        s = x2 + y2;
      }
      feld[i][j]=0;
      if (k<grenze)
      { l = 1+(int) Math.floor(Math.log(k)/Math.log(2.0)*12.0) % 12;
        feld[i][j] = l;
 
      }
    }
  }
  mandFrame frame = new mandFrame(feld,n1,n2);
  frame.setTitle("Apfelmännchen");
  frame.setVisible(true);
}
 
}
 
Java
import java.awt.Container;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
 
/*************************************************************
*  Dieses Klasse sorgt für das Neuzeichnen des Windows-Kastens
*************************************************************/
public class mandFrame extends JFrame
{  private mandPanel panel;
   public mandFrame(int[][] feld, int n1, int n2)
   {  final int DEFAULT_FRAME_WIDTH = n1;
      final int DEFAULT_FRAME_HEIGHT = n2;
      setSize(DEFAULT_FRAME_WIDTH, DEFAULT_FRAME_HEIGHT);
 
      addWindowListener(new WindowCloser());
 
      panel = new mandPanel
         (feld, n1, n2);
      Container contentPane = getContentPane();
      contentPane.add(panel, "Center");
   }
 
   private class WindowCloser extends WindowAdapter
   {  public void windowClosing(WindowEvent event)
      {  System.exit(0);
      }
   }
}
 
 
Java
import java.awt.Graphics;
import javax.swing.JPanel;
import java.awt.Color;
 
/***********************************************************
*  Diese Klasse sorgt für das Neuzeichnen vom Inneren
*  des Windows-Kastens  
***********************************************************/
public class mandPanel extends JPanel
{  private static int[][] feld;
   private static int n1;
   private static int n2;
   int x,y;
   private mandPanel panel;
   /* Konstruktor */
   public mandPanel(int[][] feld2 , int n1, int n2)
   {  feld = feld2;
      x = n1;
      y = n2;
   }
 
   /* Rahmenprogramm */
   public void paint(Graphics g)
   {  super.paint(g);
      for (int i = 0; i < x; i++)
      {  for (int j = 0; j < y; j++)
         { if (feld[i][j]==0) g.setColor(Color.BLACK);
           if (feld[i][j]==1) g.setColor(Color.BLUE);
           if (feld[i][j]==2) g.setColor(Color.CYAN);
           if (feld[i][j]==3) g.setColor(Color.DARK_GRAY);
           if (feld[i][j]==4) g.setColor(Color.GRAY);
           if (feld[i][j]==5) g.setColor(Color.GREEN);
           if (feld[i][j]==6) g.setColor(Color.LIGHT_GRAY);
           if (feld[i][j]==7) g.setColor(Color.MAGENTA);
           if (feld[i][j]==8) g.setColor(Color.PINK);
           if (feld[i][j]==9) g.setColor(Color.RED);
           if (feld[i][j]==10) g.setColor(Color.ORANGE);
           if (feld[i][j]==11) g.setColor(Color.YELLOW);
           g.drawLine(i, j, i, j);
         }
      }
   }
 
}

Teil 2


Hier noch 10 Fraktale erzeugt mit dem Uraltprogramm Fractint.










Die Bilder 2 bis 11 wurden mit Fractint unter DOS-Box erzeugt.
Es sind Ausschnitte des klassischen Apfelmännchens.
Ein Beispiel zur Erzeugung:
Datei voelz1.bat
DOS
cycles = 50000
fractint float=yes sound=off video=sf7 batch=yes maxiter=32767 map=goodega corners=1/-2.8/1.5/-1.5 savename=voelz1.gif

Aufruf:
(Dosbox)
mount d d:\Fractint
d:
voelz1

Falls der Fractint-Ordner d:\Fractint ist und die DOS-Batch-Datei voelz1.bat heißt.
Zu den Koordinaten der Bilder 2 bis 11 siehe auch mand.java ganz oben.
Die Koordinaten der Bilder gehen auf Vorschläge des Wissenschaftlers Prof.Horst Völz zurück, der 1988 die Fraktale in Basic erzeugte.
Die Rechenzeiten betrugen damals viele Stunden pro Bild - heute sind es wenige Minuten pro Bild.

Literatur:
Klaus Lerbinger/Michael Kuchenbuch: Faszination Fraktale, Systhema Verlag, München 1992

Viele Grüße
Ronald
\(\endgroup\)

Link auf diesen Artikel Link auf diesen Artikel  Druckbare Version Druckerfreundliche Version  Einen Freund auf diesen Artikel aufmerksam machen Weitersagen Kommentare zeigen Kommentare  
pdfFür diesen Artikel gibt es keine pdf-Datei


Arbeitsgruppe Alexandria Dieser Artikel ist nicht im Verzeichnis der Arbeitsgruppe Alexandria eingetragen.
[Die Arbeitsgruppe Alexandria katalogisiert die Artikel auf dem Matheplaneten]

 
Verwandte Links
 
Besucherzähler 328


[Seitenanfang]

" Mathematik: Ein kleines Programm zum Zeichnen des Apfelmännchens in Java" | 3 Kommentare
 
Für den Inhalt der Kommentare sind die Verfasser verantwortlich.

Re: Ein kleines Programm zum Zeichnen des Apfelmännchens in Java
von Delastelle am Mi. 13. Dezember 2017 00:42:15

\(\begingroup\)
Hallo,

ein Weihnachtsgeschenk?

Fototassen gibt es unter anderem bei pixum für aktuell
9,99 Euro + Versand.

Viele Grüße
Ronald\(\endgroup\)

 [Bearbeiten]

Re: Ein kleines Programm zum Zeichnen des Apfelmännchens in Java
von caoti am Fr. 05. Januar 2018 22:54:14

\(\begingroup\)
Für alle die an Fractint und Winfract (nebst Linux-Portierung)  interessiert sind hier ein Link auf eine Webseite die sich der Programme angenommen hat:

https://www.fractint.org

Ich habe die Linux Version mit Ubuntu 16.04 probiert. Hier zwei screen shots:
Das Programm Menü:



Ein Apfelmännchen:






\(\endgroup\)

 [Bearbeiten]

Re: Ein kleines Programm zum Zeichnen des Apfelmännchens in Java
von Delastelle am Do. 11. Januar 2018 00:42:27

\(\begingroup\)
Hallo caoti!

Ich habe mir mal von
www.fractint.org
das Winfract heruntergeladen.
Es läuft nicht unter meinem Windows 7.
(Wahrscheinlich auch nur unter Windows XP.)

Viele Grüße
Ronald\(\endgroup\)

 [Bearbeiten]

 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2018 by Matroids Matheplanet
This web site was made with PHP-Nuke, a web portal system written in PHP. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]