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.
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