@c English version: 2011-03-27
@menu
* Introducción a fractals::
* Definiciones para IFS fractals::
* Definiciones para fractales complejos::
* Definiciones para cops de Koch::
* Definiciones para curvas de Peano::
@end menu


@node Introducción a fractals, Definiciones para IFS fractals, fractals, fractals
@section Introducción a fractals

Este paquete define algunos fractales:

- con IFS (Iterated Function System) aleatorias: triángulo de  Sierpinsky, un
árbol y un helecho.

- Fractales complejos: conjuntos de Mandelbrot y de Julia.

- Copos de Koch.

- Funciones de Peano: funciones de Sierpinski y Hilbert.

Autor: José Rammírez Labrador.

Para preguntas, sugerencias y fallos,

pepe DOT ramirez AAATTT uca DOT es

@node Definiciones para IFS fractals, Definiciones para fractales complejos, Introducción a fractals, fractals
@section Definiciones para IFS fractals

Algunos fractales se pueden generar por medio de la aplicación iterativa
de transformaciones afines contractivas de forma aleatoria; véase

Hoggar S. G., "Mathematics for computer graphics", Cambridge University
Press 1994.

Definimos una lista con varias transformaciones afines contractivas,
luego las vamos seleccionando de forma aleatoria y recursiva. La
probabilidad de selección de una transformación debe estar relacionada
con la razón de contracción.

Se pueden cambiar las transformaciones y encontrar nuevos fractales.


@deffn {Función} sierpinskiale (@var{n})

Triángulo de Sierpinski: 3 aplicaciones contractivas; constante de contracción de 0.5
y traslaciones. Todas las aplicaciones tienen la misma constante de contracción. El argumento
@var{n} debe ser suficientemente alto, 10000 o mayor.

Ejemplo:

@example
(%i1) load("fractals")$
(%i2) n: 10000$
(%i3) plot2d([discrete,sierpinskiale(n)], [style,dots])$
@end example
@end deffn

@deffn {Función} treefale (@var{n})

3 aplicaciones contractivas, todas ellas con el mismo coeficiente
de contracción. El argumento @var{n} debe ser suficientemente alto, 10000 o mayor.

Ejemplo:

@example
(%i1) load("fractals")$
(%i2) n: 10000$
(%i3) plot2d([discrete,treefale(n)], [style,dots])$
@end example
@end deffn

@deffn {Función} fernfale (@var{n})

4 aplicaciones contractivas, cuyas probabilidades de selección deben estar
relacionadas con su constante de contracción. El argumento @var{n} debe ser
suficientemente alto, 10000 o mayor.

Ejemplo:

@example
(%i1) load("fractals")$
(%i2) n: 10000$
(%i3) plot2d([discrete,fernfale(n)], [style,dots])$
@end example
@end deffn

@node Definiciones para fractales complejos, Definiciones para cops de Koch, Definiciones para IFS fractals, Top
@section Definiciones para fractales complejos

@deffn {Función} mandelbrot_set (@var{x}, @var{y})

Conjunto de Mandelbrot.

Esta función debe realizar muchas operaciones y puede tardar bastante
tiempo en ejecutarse, tiempo que también depende del número de puntos
de la malla.

Ejemplo:

@example
(%i1) load("fractals")$
(%i2) plot3d (mandelbrot_set, [x, -2.5, 1], [y, -1.5, 1.5],
                [gnuplot_preamble, "set view map"],
                [gnuplot_pm3d, true],
                [grid, 150, 150])$
@end example
@end deffn




@deffn {Función} julia_set (@var{x}, @var{y})

Conjuntos de Julia.

Esta función debe realizar muchas operaciones y puede tardar bastante
tiempo en ejecutarse, tiempo que también depende del número de puntos
de la malla.

Ejemplo:

@example
(%i1) load("fractals")$
(%i2) plot3d (julia_set, [x, -2, 1], [y, -1.5, 1.5],
                [gnuplot_preamble, "set view map"],
                [gnuplot_pm3d, true],
                [grid, 150, 150])$
@end example

Véase también @code{julia_parameter}.
@end deffn




@defvr {Variable opcional} julia_parameter
Valor por defecto: @code{%i}

Parámetro complejo para fractales de Julia. Su valor por defecto es @code{%i},
y otros que se sugieren son: @code{-.745+%i*.113002}, @code{-.39054-%i*.58679},
@code{-.15652+%i*1.03225}, @code{-.194+%i*.6557} y @code{.011031-%i*.67037}.

@end defvr





@deffn {Función} julia_sin (@var{x}, @var{y})

Mientras que la función @code{julia_set} implementa la transformación 
@code{julia_parameter+z^2}, la función @code{julia_sin} implementa 
@code{julia_parameter*sin(z)}. Véase el código fuente para más detalles.

Este programa es lento porque calcula muchos senos; el tiempo de ejecución 
también depende del número de puntos de la malla.

Ejemplo:

@example
(%i1) load("fractals")$
(%i2) julia_parameter:1+.1*%i$
(%i3) plot3d (julia_sin, [x, -2, 2], [y, -3, 3], 
                [gnuplot_preamble, "set view map"],
                [gnuplot_pm3d, true],
                [grid, 150, 150])$
@end example

Véase también @code{julia_parameter}.
@end deffn

@node Definiciones para cops de Koch, Definiciones para curvas de Peano, Definiciones para fractales complejos, Top
@section Definiciones para cops de Koch



@deffn {Función} snowmap (@var{ent}, @var{nn})

Copos de Koch. La función @code{snowmap} dibuja el copo de Koch
sobre los vértices de un polígono convexo inicial del
plano complejo. La orientación del polígono es importante.
El argumento @var{nn} es el número de recursividades de la transformación
de Koch, el cual debe ser pequeño (5 o 6).

Ejemplos:

@example
(%i1) load("fractals")$
(%i2) plot2d([discrete,
              snowmap([1,exp(%i*%pi*2/3),exp(-%i*%pi*2/3),1],4)])$
(%i3) plot2d([discrete,
              snowmap([1,exp(-%i*%pi*2/3),exp(%i*%pi*2/3),1],4)])$
(%i4) plot2d([discrete, snowmap([0,1,1+%i,%i,0],4)])$
(%i5) plot2d([discrete, snowmap([0,%i,1+%i,1,0],4)])$
@end example
@end deffn





@node Definiciones para curvas de Peano,  , Definiciones para cops de Koch, fractals
@section Definiciones para curvas de Peano

Funciones continuas que cubren un área. Aviso: el número de puntos
crece exponencialmente con @var{n}.



@deffn {Función} hilbertmap (@var{nn})

Curva de Hilbert. El argumento @var{nn} debe ser pequeño (por ejemplo, 5).
Maxima se puede detener si @var{nn} es 7 o mayor.

Ejemplo:

@example
(%i1) load("fractals")$
(%i2) plot2d([discrete,hilbertmap(6)])$
@end example
@end deffn

@deffn {Función} sierpinskimap (@var{nn})

Curva de Sierpinski. El argumento @var{nn} debe ser pequeño (por ejemplo, 5).
Maxima se puede detener si @var{nn} es 7 o mayor.

Ejemplo:

@example
(%i1) load("fractals")$
(%i2) plot2d([discrete,sierpinskimap(6)])$
@end example
@end deffn


