Principal | Gráficos 3D | Gráficos 2D | Fractales | Math | Códigos | Tutoriales | Links
La definición del Conjunto de Julia es similar al Conjunto de Mandelbrot
Zn+1 = Zn2 + C
donde Z, C son números complejos
La constante compleja C, me determina el tipo de Conjunto de Julia.
El Conjunto de Julia se calcula de manera identica que el Conjunto de Mandelbrot, salvo que en este caso C es constante, y Z va tomando los diferentes puntos del plano complejo.
Represento los puntos que tienden a 0 en negro y los puntos que se van a infinito los represento de diferentes colores según la "velocidad" con que se van a infinito, es decir el número de iteraciones necesarias para salir.
En este caso utilizo C = -0.745 + 0.1i y obtengo las siguientes representaciónes a diferentes escalas de Zoom.
|
| xmin = -1.5, ymin = -1.5, xmax = 1.5, ymax = 1.5, Iteraciones = 256 |
|---|
|
| xmin = 0.0, ymin = 0.0, xmax = 0.75, ymax = 0.75, Iteraciones = 256 |
|---|
|
| xmin = 0.225, ymin = 0.2, xmax = 0.325, ymax = 0.3, Iteraciones = 256 |
|---|
Si tomamos un C=0.3 + 0.6i obtenemos el siguiente Conjunto de Julia.
|
| xmin = -1.5, ymin = -1.5, xmax = 1.5, ymax = 1.5, Iteraciones = 256 |
|---|
Si en cambio tomamos C=-0.12 + 0.75i, obtenemos.
|
| xmin = -1.5, ymin = -1.5, xmax = 1.5, ymax = 1.5, Iteraciones = 256 |
|---|
En el código se debe poner lo siguiente para obtener los respectivos Conjuntos de Julia. Cuando : C = -0.745 + 0.1i tenemos ReC=-0.745 y ImC=0.1 C = 0.3 + 0.6i tenemos ReC=0.3 y ImC=0.6 C = -0.12 + 0.75i tenemos ReC=-0.12 y ImC=0.75 ya que C = ReC + ImCi. La formula iterativa del Conjunto de Julia la reescribimos tomando Z = ReZ + ImZi y C =ReC + ImCi y como Z = Z2 + C nos queda ReZ + ImZi = (ReZ + ImZi)2 + (ReC + ImCi) operando ReZ + ImZi = (ReZ*ReZ - ImZ*ImZ) + 2*ReZ*ImZi separo la parte real y la imaginaria. ReZ = ReZ*ReZ - ImZ*ImZ + ReC ImZ = 2*ReZ*ImZ + ImC para evaluar estas expreciones en el código utilice dos nuevas varibles Re2Z y Im2Z donde. Re2Z = ReZ*ReZ Im2Z = ImZ*ImZ con lo que me queda finalmente ReZ = Re2Z - Im2Z + ReC ImZ = 2*ReZ*ImZ |
Todas las imagenes de arriba fueron hechas con la siguiente rutina, el proyecto esta hecho en VisualBasic 5.0 y su código completo se encuentra en julia.zip ( 5 Kb) , no contiene el executable.
Private Sub AdjustAspect()
Dim want_aspect As Single
Dim canvas_aspect As Single
Dim hgt As Single
Dim wid As Single
Dim mid As Single
want_aspect = (ymax - ymin) / (xmax - xmin)
canvas_aspect = screeny / screenx
If want_aspect > canvas_aspect Then
wid = (ymax - ymin) / canvas_aspect
mid = (xmin + xmax) / 2
VisibleXmin = mid - wid / 2
VisibleXmax = mid + wid / 2
VisibleYmin = ymin
VisibleYmax = ymax
Else
hgt = (xmax - xmin) * canvas_aspect
mid = (ymin + ymax) / 2
VisibleYmin = mid - hgt / 2
VisibleYmax = mid + hgt / 2
VisibleXmin = xmin
VisibleXmax = xmax
End If
End Sub
Private Sub Julia()
Dim ReZ, ImZ As Double
Dim Re2Z, Im2Z As Double
Dim Red, Green, Blue As Double
Dim i, j As Integer
Dim N As Integer
AdjustAspect
For i = 0 To screenx
For j = 0 To screeny
ReZ = ((VisibleXmax - VisibleXmin) / (screenx - 1)) * i + VisibleXmin
ImZ = ((VisibleYmax - VisibleYmin) / (screeny - 1)) * j + VisibleYmin
Re2Z = ReZ * ReZ
Im2Z = ImZ * ImZ
N = 0
Do While (N < MaxIterations) And (Re2Z + Im2Z < 4)
Re2Z = ReZ * ReZ
Im2Z = ImZ * ImZ
ImZ = 2 * ReZ * ImZ + ImC
ReZ = (Re2Z - Im2Z) + ReC
N = N + 1
Loop
If N = MaxIterations Then
Red = 0#
Green = 0#
Blue = 0#
Else
Red = RGBColor(N, 0)
Green = RGBColor(N, 1)
Blue = RGBColor(N, 2)
End If
Picture1.PSet (i, screeny - j), RGB(Red, Green, Blue)
Next j
Next i
End Sub
|
valcoey@hotmail.com
Ramiro Alcocer, 2001
Principal | Gráficos 3D | Gráficos 2D | Fractales | Math | Códigos | Tutoriales | Links