Hallo zusammen,
Ich weis, es gibt schon mehrere Threads zu dem Thema. Doch ich habe irgendwo in der Rechnung einen Fehler.
Ich nehme mal stark an, dass der Betrag n oder c bereits bei Iterationsbeginn den Maximalenbetrag überschreitet, und somit die Iteration beendet.
Wieso? Hab gestern mehrere Versuche gemacht, wobei oft auch ein einfacher Kreis entstanden ist, der ich von Bildern im Netz bei der Iterationstiefe 1 sehe. Seltsamer weiße gingen
von diesem Strahlen aus, ähnlich einer Sonne.
So sieht dass im Moment aus.
Dass war der erste Versuch.
Dass der 2 von dem auch das Bild stammt.
Könnt ihr mir sagen was genau da nicht stimmt?
LG
#Edit
Verändere ich :
in
Entsteht besagter Kreis bzw. Oval.
Ich weis, es gibt schon mehrere Threads zu dem Thema. Doch ich habe irgendwo in der Rechnung einen Fehler.
Ich nehme mal stark an, dass der Betrag n oder c bereits bei Iterationsbeginn den Maximalenbetrag überschreitet, und somit die Iteration beendet.
Wieso? Hab gestern mehrere Versuche gemacht, wobei oft auch ein einfacher Kreis entstanden ist, der ich von Bildern im Netz bei der Iterationstiefe 1 sehe. Seltsamer weiße gingen
von diesem Strahlen aus, ähnlich einer Sonne.
So sieht dass im Moment aus.
VB.NET-Quellcode
- Public Sub GetFont()
- Dim xL As Double = Math.Abs(xMin) + Math.Abs(xMax)
- Dim yL As Double = Math.Abs(yMin) + Math.Abs(yMax)
- Dim oX As Double = xL / bmp.Width
- Dim oY As Double = yL / bmp.Height
- Dim l As Integer = bmp.Width - 1
- Dim h As Integer = bmp.Height - 1
- Dim frk(l, h) As Color
- Parallel.For(0, l - 1, Sub(X)
- Parallel.For(0, h - 1, Sub(Y)
- Dim kx As Double = (X * oX) + xMin
- Dim ky As Double = (Y * oY) + yMin
- Dim xx As Double = kx * kx
- Dim yy As Double = ky * ky
- Dim xy As Double = kx * ky
- Dim Betrag_2 As Integer = xx + yy
- Dim remain_iter As Integer = 500
- Do While Betrag_2 <= 2 And remain_iter > 0
- remain_iter = remain_iter - 1
- kx = xx - yy + kx
- ky = xy + xy + ky
- xx = kx * kx
- yy = ky * ky
- xy = kx * ky
- Betrag_2 = xx + yy
- Loop
- If remain_iter = 0 Then
- frk(X, Y) = Color.Black
- Else
- Dim drS As Double = 200 - remain_iter - Math.Log(Math.Log(Betrag_2) / Math.Log(4)) / Math.Log(2)
- Dim c As Single = Math.Abs(drS)
- frk(X, Y) = Color.FromArgb(c)
- 'max_iter - remain_iter – log(log(betrag_2) / log(4)) / log(2)
- End If
- End Sub)
- End Sub)
- For x As Integer = 0 To l
- For y As Integer = 0 To h
- SetPixel(New Point(x, y), frk(x, y))
- Next
- Next
- End Sub
Dass war der erste Versuch.
VB.NET-Quellcode
- Private Sub NewTest()
- Dim xL As Double = Math.Abs(xMin) + Math.Abs(xMax)
- Dim yL As Double = Math.Abs(yMin) + Math.Abs(yMax)
- Dim oX As Double = xL / bmp.Width
- Dim oY As Double = yL / bmp.Height
- Dim n As Integer = 0 'Iterationstiefe
- Dim l As Double = 4 'Grenze
- Dim x, y As Double
- Dim c, d As Double
- For reel As Integer = 0 To bmp.Width - 1
- For ima As Integer = 0 To bmp.Height - 1
- n = 0
- l = 0
- x = xMin + (oX * reel)
- y = yMin + (oY * ima)
- Do While l <= 4 And n <= 100
- c = x : d = y
- x = (c * c) - (d * d) + x
- y = (2 * c * d) + y
- l = Math.Sqrt((x * x) + (y * y))
- n += 1
- Loop
- If l < 4 Then
- bmp.SetPixel(reel, ima, Color.Black)
- End If
- Next
- Next
- End Sub
Dass der 2 von dem auch das Bild stammt.
Könnt ihr mir sagen was genau da nicht stimmt?
LG
#Edit
Verändere ich :
in
Entsteht besagter Kreis bzw. Oval.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Bagplatt“ ()