Die Bilder oben zeigen noch einmal ein erzeugtes Muster in voller Auflösung und die erforderliche Form.

Sie enthält zwei Buttons und 8 Textboxen, deren Nummern den Boxen selbst entnommen werden können.

Bei der großen, schwarzen Fläche handelt es sich um eine PictureBox.

 

 

Bedienung

 

Die Werte in den Textboxen sind standardmäßig vorgeben, so dass ein Klick auf Start genügt.

  • Das Programm bricht nach einer Weile ab. Jede an die in TextBox 1 stehende Zahl angehängte Null verlängert die Laufzeit um den Faktor 10.
  • Wenn Sie die in den Boxen 2, 3 und 4 vorgegebenen Werte ändern, ändert sich das erzeugte Muster. Einfach ausprobieren! Auch Nachkommastellen sind möglich.
  • TextBox 5: Eine Verkleinerung der dort stehenden Zahl bewirkt eine Vergrößerung des Musters.
  • TextBoxen 6, 7 und 8: Die Figur ändert während des Programmablaufs ihre Farben. Durch Änderung der Werte in diesen Boxen kann die Farbänderung beeinflusst werden. Das geschieht wie folgt: Die RGB-Werte der gezeichneten Punkte steigen zyklisch um die vorgegebenen Intervalle. Sind diese unterschiedlich groß, so geraten sie außer Takt und sorgen für unterschiedliche RGB-Werte und damit Farben. Sind die Werte gleichgroß, so entstehen Grauwerte.
  • Mit Stop kann der Vorgang angehalten werden.

 

 

 

Code

 

Im Gegensatz zum Processing-Code kann der VB-Code nicht direkt in den geöffneten Editor kopiert werden. Die Möglichkeit des Herunterladens von VB-Projektdateien wird vom vorliegenden Webseiten-Erstellungstool leider nicht angeboten. Gehen Sie daher wie folgt vor:

 

Eröffnen Sie in VB ein neues Projekt mit einer Form, die im Prinzip der oben abgebildeten entspricht.

Bringen Sie die TextBoxen und Buttons so wie die PictureBox auf die Form und kopieren Sie den Code in die entsprechenden Funktionen im Code-Fenster, die dort beim Anklicken der Buttons erzeugt werden.

Kommentarzeilen sind hier durch ein ' gekennzeichnet, z.B: ' Kommentar.

 

Der Algorithmus wurde von Barry Martin ( Aston University Birmingham) entwickelt. In den Achtziger Jahren wurde er durch einen Artikel in der Zeitschrift "Spektrum der Wissenschaft" bekannt. Das folgende Programm funktioniert auf der Basis des Martin-Algorithmus, verwendet dabei jedoch einen vom Autor entwickelten Code.

 

' Source Code: Kurt Diedrich

' Only for private use

 

Public Class Form1

    ' ###############  PROGRAMM "HOPALONG" ZUM ZEICHNEN VON ORBIT FRAKTALEN

    ' ###############  NACH DEM BARRY-MARTIN-ALGORITHMUS

 

    ' ###################  Variablendeklaration  ##########################

 

    Dim schleifenzahl As Double ' Anzahl der Iterationen

    Dim a As Double             ' Hopalong-Parameter

    Dim b As Double             ' Hopalong-Parameter

    Dim c As Double             ' Hopalong-Parameter

    Dim x As Double             ' Hopalong-Parameter

    Dim y As Double             ' Hopalong-Parameter

    Dim i As Double             ' Iterationsvariable

    Dim yy As Double            ' Hopalong-Parameter

    Dim xx As Double            ' Hopalong-Parameter

    Dim teilfaktor As Double    ' Größe der Abbildung

 

    Dim counter1 As Single      ' Farb-Berechnung

    Dim counter2 As Single      ' Farb-Berechnung

    Dim counter3 As Single      ' Farb-Berechnung

    Dim schwelle1 As Single

    Dim schwelle2 As Single

    Dim schwelle3 As Single

    Dim escape As Integer

 

 

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e _

    As System.EventArgs) Handles MyBase.Load

 

        ' Textboxen werden beim Start AUTOMATISCH mit 

        'vorgegebenen Standardparametern gefüllt

        TextBox1.Text = 100000

        TextBox2.Text = 98

        TextBox3.Text = "0.44"

        TextBox4.Text = "23.234"

        TextBox5.Text = 100

        TextBox6.Text = 0.001 'schwelle1

        TextBox7.Text = 0.002 'schwelle1

        TextBox8.Text = 0.003 'schwelle1

 

    End Sub

 

 

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e _

    As System.EventArgs) Handles Button1.Click

        escape = 0

        'Reset verschiedener Hopalong-Parameter

 

        xx = 0

        yy = 0

        x = 0

        y = 0

        counter1 = 0

        counter2 = 0

        counter3 = 0

        PictureBox1.CreateGraphics.Clear(Color.Black) 'Bildschirm löschen

 

        'Den Variablen werden die in den TextBoxen 

        'gespeicherten Werte zugeordnet.

        'Die Werte in den TextBoxen können vom Anwender vor dem 

        'Start einer neuen Grafik geändert werden

        a = CInt(TextBox2.Text)

        b = CInt(TextBox3.Text)

        c = CInt(TextBox4.Text)

        schleifenzahl = TextBox1.Text

        teilfaktor = TextBox5.Text

        schwelle1 = TextBox6.Text 'rot

        schwelle2 = TextBox7.Text 'grün

        schwelle3 = TextBox8.Text 'blau

 

        ' Schleife zum Zeichnen der Grafik

 

        For i = 1 To schleifenzahl

            Application.DoEvents()

 

            PictureBox1.CreateGraphics.FillRectangle(New SolidBrush(System.Drawing.Color. _

            FromArgb(Int(counter1), Int(counter2), Int(counter3))), _

            New Rectangle(10 * x / teilfaktor + 300, 10 * y / teilfaktor + 300, 1, 1))

 

            'Die Hopalong-Formel:

            xx = y - Math.Sign(x) * Math.Sqrt(Math.Abs(b * x - c))

 

            'Ein kleiner "Trick" zum kontinuierlichen Ändern der Farben 

 

            counter1 = counter1 + schwelle1

            If counter1 > 255 Then counter1 = 0

            counter2 = counter2 + schwelle2

            If counter2 > 255 Then counter2 = 0

            counter3 = counter3 + schwelle3

            If counter3 > 255 Then counter3 = 0

 

            'Weiterer Teil der Hopalong-Formel

            yy = a - x

 

            'Dies sind Alternativen zur obigen Zeile, 

            'die ebenfalls interessante Ergebnisse liefern

            'yy = b - x

            'yy = a + b - x

            'yy = a - b - x

            'yy = b * b - x

            ''yy = Math.Sqrt(a * b) - x

 

            'Weiterer Teil der Hopalong-Formel

            x = xx

            y = yy

            If escape = 1 Then Exit For

        Next

 

    End Sub

   

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e _

    As System.EventArgs) Handles Button2.Click

        escape = 1

    End Sub

    

 

    End Sub

End Class