
En matemáticas , una trampa orbital es un método para colorear imágenes fractales basado en la proximidad de una función iterativa , utilizada para crear el fractal, a una forma geométrica denominada "trampa". Las trampas típicas son puntos, líneas, círculos, formas de flores e incluso imágenes rasterizadas . Las trampas orbitales se utilizan generalmente para colorear fractales bidimensionales que representan el plano complejo.
Ejemplos

Basado en puntos
Una trampa de órbita basada en puntos colorea un punto en función de la proximidad de la órbita de una función a un único punto, normalmente el origen.
Basado en líneas
Una trampa orbital basada en líneas colorea un punto según la proximidad de la órbita de una función a una o más líneas, generalmente verticales u horizontales (líneas x=a o y=a). Los tallos de Pickover son un ejemplo de trampa orbital basada en líneas que utiliza dos líneas.
Algoritmo
Las trampas orbitales se utilizan normalmente con la clase de fractales bidimensionales basados en una función iterativa. Un programa que crea dicho fractal colorea cada píxel, que representan puntos discretos en el plano complejo, en función del comportamiento de esos puntos al pasar 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 z n +1 = z n 2 + c . La forma más común de colorear las imágenes de Mandelbrot consiste en tomar el número de iteraciones necesarias para alcanzar un determinado valor de escape y asignarle un color. Esto se conoce como algoritmo de tiempo de escape.
Un programa que colorea el conjunto de Mandelbrot utilizando 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:
distancia doble = 10 e5A medida que el programa pasa el valor complejo a través de la función iterativa, comprobará la distancia entre cada punto de la órbita y el punto de captura. 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 ++ ) { // Realizar la iteración de Mandelbrot z = z.multiply ( z ) ; z = z.add ( c ); // Establecer la nueva distancia 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
- Carlson, Paul W. (1999), "Dos métodos artísticos de representación de trampas orbitales para fractales de conjunto M de Newton", Computers & Graphics , 23 (6): 925–931 , doi : 10.1016/S0097-8493(99)00123-5.
- Lu, Jian; Ye, Zhongxing; Zou, Yuru; Ye, Ruisong (2005), "Métodos de renderizado de trampas orbitales para generar imágenes artísticas con simetrías cristalográficas", Computers & Graphics , 29 (5): 787–794 , doi : 10.1016/j.cag.2005.08.008.
- Fractales