Hallo zusammen,
Ich hab in letzter Zeit gefallen an der Generierung von Fraktalen gefunden. Doch die Umsetzung bereitet mir immer wieder Probleme.
Das Mathematische Know-How, insbesondere die Umstellung von Formeln in den Programmcode fällt mir schwer.
Erstes Beispiel : Hüpfer - Fraktale
Zeichnen tut es, doch nicht dass was es soll. Anhand von den Beispiel Bildern und deren Werten kann ich ja vergleichen ob dass Ergebniss stimmt.
Informationen hab ich von hier : mathematische-basteleien.de/huepfer.htm#Algorithmus
Meine Lieblingsquelle Wikipedia liefert mir absolut keine Informationen dazu.
Zweites Beispiel : Mira - Fraktal
Man soll einen Punkt als Input geben. Anhand der Formel wird dann der Punkt errechnet und für die weitere Iteration verwendet. Sollte eigentlich ganz einfach sein.
Doch dann kommt folgender Satz : Diese Iteration wird solange wiederholt, bis sich aus der Folge der aufgezeichneten Bildpunkte ein Attraktor erkennen lässt.
Infos : fraktalwelt.de/myhome/simpiter-g.htm
Selbst aus Wikipedia werde ich nicht schlau was dieser Attraktor ist. Ich könnte nur annehmen, dass die Menge sich an einen Punkt nähert der sich nicht mehr viel ändert.
Ähnlich der Mandelbrotmenge die gegen unendlich strebt.
Aber selbst mit einer Festen Anzahl an Iterationen kommt kein wirkliches Bild heraus.
Was stimmt da nicht?
P.S Mir geht es eher darum ob ich die Formel richtig habe. Und wie ich mir dass besser verständlich machen kann, und wie dass Funktioniert. Deswegen im Offtopic und nicht VB Forum
*Topic (trotzdem) verschoben*
Ich hab in letzter Zeit gefallen an der Generierung von Fraktalen gefunden. Doch die Umsetzung bereitet mir immer wieder Probleme.
Das Mathematische Know-How, insbesondere die Umstellung von Formeln in den Programmcode fällt mir schwer.
Erstes Beispiel : Hüpfer - Fraktale
VB.NET-Quellcode
- Private Function GetHopalong(ByVal a As Double, ByVal b As Double, ByVal c As Double, ByVal num As Integer, ByVal middle As Point) As Bitmap
- Dim bmp As New Bitmap(PictureBox1.Width, PictureBox1.Height)
- Dim xx, yy As Double
- Dim x As Integer = 0
- Dim y As Integer = 0
- For i As Integer = 0 To num
- Dim pkt As New Point(CInt(x + middle.X), CInt(y + middle.Y))
- If pkt.Y > 0 And pkt.Y < bmp.Height Then
- If pkt.X > 0 And pkt.X < bmp.Width Then
- bmp.SetPixel(pkt.X, pkt.Y, Color.Black)
- End If
- End If
- xx = yy + Math.Sign(x) * (Math.Abs(b * x - c))
- yy = a - x
- x = CInt(xx)
- y = CInt(yy)
- Next
- Return bmp
- End Function
Zeichnen tut es, doch nicht dass was es soll. Anhand von den Beispiel Bildern und deren Werten kann ich ja vergleichen ob dass Ergebniss stimmt.
Informationen hab ich von hier : mathematische-basteleien.de/huepfer.htm#Algorithmus
Meine Lieblingsquelle Wikipedia liefert mir absolut keine Informationen dazu.
Zweites Beispiel : Mira - Fraktal
Man soll einen Punkt als Input geben. Anhand der Formel wird dann der Punkt errechnet und für die weitere Iteration verwendet. Sollte eigentlich ganz einfach sein.
Doch dann kommt folgender Satz : Diese Iteration wird solange wiederholt, bis sich aus der Folge der aufgezeichneten Bildpunkte ein Attraktor erkennen lässt.
Infos : fraktalwelt.de/myhome/simpiter-g.htm
Selbst aus Wikipedia werde ich nicht schlau was dieser Attraktor ist. Ich könnte nur annehmen, dass die Menge sich an einen Punkt nähert der sich nicht mehr viel ändert.
Ähnlich der Mandelbrotmenge die gegen unendlich strebt.
Aber selbst mit einer Festen Anzahl an Iterationen kommt kein wirkliches Bild heraus.
VB.NET-Quellcode
- Private Function GetMiraAttraktor(ByVal P As Point, ByVal a As Double, ByVal b As Double, ByVal scale As Double) As Bitmap
- 'Es geht ein Anfangspunkt rein.
- Dim x, y As Double
- Dim bmp As New Bitmap(500, 500)
- x = b * P.X + MiraFX(a, P.X)
- y = -x + MiraFX(a, x)
- For i As Integer = 0 To 10000066
- bmp.SetPixel(CInt(scale * x + (CInt(bmp.Width / 2))), CInt(scale * y + (CInt(bmp.Height / 2))), Color.Red)
- x = b * P.X + MiraFX(a, x)
- y = x + MiraFX(a, x)
- ' MsgBox(x & " : " & y)
- Next
- Return bmp
- End Function
- Private Function MiraFX(ByVal a As Double, ByVal x As Double) As Double
- Return a * x - (1 - a) * ((2 * x * x) / (1 + x * x))
- End Function
Was stimmt da nicht?
P.S Mir geht es eher darum ob ich die Formel richtig habe. Und wie ich mir dass besser verständlich machen kann, und wie dass Funktioniert. Deswegen im Offtopic und nicht VB Forum
*Topic (trotzdem) verschoben*
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcus Gräfe“ ()