Anar al contingut

Trampa orbital

De L'Enciclopèdia, la wikipedia en valencià
Archiu:Line and point trap golden.png
Conjunt de Mandelbrot renderizado utilisant una combinació de trampes orbitales en forma de creu i de punt

En matemàtiques, una trampa orbital (nom original en anglés: orbital trap)[1] és un método per a colorear imàgens de fractalés basat en la distància a la que s'acosta la funció iterada (usada per a crear el fractal) a una forma geomètrica, cridada trampa. Les trampes típiques són punts, llínees, círculs, formes de flors i inclús imàgens digitals. Les trampes orbitales s'utilisen normalment per a colorear fractales bidimensionales que representen el pla complex.

Eixemples

[editar | editar còdic]
Archiu:Mandelbrot-Menge mit Regenbogenfarben 20201028.png
Trampes orbitales d'un conjunt de Mandelbrot a través de la coloració de l'arc iris

Basades en punts

[editar | editar còdic]

Una trampa orbital basada en punts colorea cada píxel en funció de lo prop que està a l'òrbita d'una funció definida per un sol punt, generalment l'orige.

Basades en llínees rectes

[editar | editar còdic]

Una trampa orbital basada en llínees rectes colorea un punt segons lo prop que està a l'òrbita d'una funció a una o més llínees rectes, generalment verticals o horisontals (rectes x = a o i = a). Els tallos de Pickover[2] són un eixemple d'una trampa orbital basada en llínees que usa dos rectes.

Algoritme

[editar | editar còdic]

Les trampes orbitales s'utilisen normalment en la classe de fractales bidimensionales basats en una funció iterativa. Un programa que crea tal fractal colorea cada píxel, que representa punts discrets en el pla complex, basant-se en el comportament d'eixos punts quan passen per una funció un número determinat de voltes.

L'eixemple més conegut d'este tipo de fractal és el conjunt de Mandelbrot, que es basa en la funció zn+1 = zn2 + c. La forma més comuna de colorear imàgens de Mandelbrot és prenent la cantitat de iteraciones necessàries per a alcançar un cert valor d'escape, i després assignant-li un color a eixe valor. A açò se li crida algoritme de temps d'escape.

Un programa que colorea el conjunt de Mandelbrot usant una trampa orbital basada en punts assignarà a cada píxel una variable de "distància", que normalment serà molt alta quan s'assigne per primera volta:

double distance = 10i5

A mida que el programa passa el valor complex a través de la funció iterativa, verificarà la distància entre cada punt de l'òrbita i el punt de la trampa. El valor de la variable de distància serà la distància més curta trobada durant la iteración:

private double getDistance(Complex c,
                           Complex point,
                           int maxIteration)
{        
    double distance = 1i20;
    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;
}


Referències

[editar | editar còdic]
  1. Andrzej Katunin (2017). A Concise Introduction to Hypercomplex Fractals, CRC Press, pp. 9 de 99. ISBN 9781351801218.
  2. (1998) Chaos and Fractals: A Computer Graphical Journey, Elsevier, pp. 282 de 452. ISBN 9780080528861.