En matemáticas, una trampa orbital (nombre original en inglés: orbital trap)[1] es un método para colorear imágenes de fractales basado en la distancia a la que se acerca la función iterada (usada para crear el fractal) a una forma geométrica, llamada trampa. Las trampas típicas son puntos, líneas, círculos, formas de flores e incluso imágenes digitales. Las trampas orbitales se utilizan normalmente para colorear fractales bidimensionales que representan el plano complejo.
Ejemplos
Basadas en puntos
Una trampa orbital basada en puntos colorea cada píxel en función de lo cerca que está a la órbita de una función definida por un solo punto, generalmente el origen.
Basadas en líneas rectas
Una trampa orbital basada en líneas rectas colorea un punto según lo cerca que está a la órbita de una función a una o más líneas rectas, generalmente verticales u horizontales (rectas x = a o y = a). Los tallos de Pickover[2] son un ejemplo de una trampa orbital basada en líneas que usa dos rectas.
Algoritmo
Las trampas orbitales se utilizan normalmente con la clase de fractales bidimensionales basados en una función iterativa. Un programa que crea tal fractal colorea cada píxel, que representa puntos discretos en el plano complejo, basándose en el comportamiento de esos puntos cuando pasan por una función un número determinado de veces.
El ejemplo más conocido de este tipo de fractal es el conjunto de Mandelbrot, que se basa en la función zn+1 = zn2 + c. La forma más común de colorear imágenes de Mandelbrot es tomando la cantidad de iteraciones necesarias para alcanzar un cierto valor de escape, y luego asignándole un color a ese valor. A esto se le llama algoritmo de tiempo de escape.
Un programa que colorea el conjunto de Mandelbrot usando una trampa orbital basada en puntos asignará a cada píxel una variable de "distancia", que normalmente será muy alta cuando se asigne por primera vez:
double distance = 10e5
A medida que el programa pasa el valor complejo a través de la función iterativa, verificará la distancia entre cada punto de la órbita y el punto de la trampa. El valor de la variable de distancia será la distancia más corta encontrada durante la iteración:
private double getDistance(Complex c,
Complex point,
int maxIteration)
{
double distance = 1e20;
Complex z = new Complex(0, 0);
for (int i=0; i<maxIteration; i++)
{
// Perform Mandelbrot iteration
z = z.multiply(z);
z = z.add(c);
// Set new distance dist = min( dist, |z-point| )
Complex zMinusPoint = new Complex(z);
zMinusPoint = zMinusPoint.subtract(point);
double zMinusPointModulus = zMinusPoint.magnitude();
if (zMinusPointModulus < distance)
distance = zMinusPointModulus;
}
return distance;
}
Referencias
- ↑ Andrzej Katunin (2017). A Concise Introduction to Hypercomplex Fractals. CRC Press. pp. 9 de 99. ISBN 9781351801218. Consultado el 4 de enero de 2022.
- ↑ Chaos and Fractals: A Computer Graphical Journey. Elsevier. 1998. pp. 282 de 452. ISBN 9780080528861. Consultado el 4 de enero de 2022.
Bibliografía
- Carlson, Paul W. (1999), «Two artistic orbit trap rendering methods for Newton M-set fractals», Computers & Graphics 23 (6): 925-931, doi:10.1016/S0097-8493(99)00123-5..
- Lu, Jian; Ye, Zhongxing; Zou, Yuru; Ye, Ruisong (2005), «Orbit trap rendering methods for generating artistic images with crystallographic symmetries», Computers & Graphics 29 (5): 787-794, doi:10.1016/j.cag.2005.08.008..