Skip to content
Surf Wiki
Save to docs
general/fractals

From Surf Wiki (app.surf) — the open knowledge base

Orbit trap

Method of colouring fractal images

Orbit trap

Method of colouring fractal images

Mandelbrot set rendered using a combination of cross and point shaped orbit traps.

In mathematics, an orbit trap is a method of colouring fractal images based upon how close an iterative function, used to create the fractal, approaches a geometric shape, called a "trap". Typical traps are points, lines, circles, flower shapes and even raster images. Orbit traps are typically used to colour two dimensional fractals representing the complex plane.

Examples

Orbit traps of a Mandelbrot set via rainbow coloring

Point based

A point-based orbit trap colours a point based upon how close a function's orbit comes to a single point, typically the origin.

Line based

A line-based orbit trap colours a point based upon how close a function's orbit comes to one or more lines, typically vertical or horizontal (x=a or y=a lines). Pickover stalks are an example of a line based orbit trap which use two lines.

Julia set animation, with varying area of the image support, used as orbit trap.

Algorithm

Orbit traps are typically used with the class of two-dimensional fractals based on an iterative function. A program that creates such a fractal colours each pixel, which represent discrete points in the complex plane, based upon the behaviour of those points when they pass through a function a set number of times.

The best known example of this kind of fractal is the Mandelbrot set, which is based upon the function z**n+1 = z**n2 + c. The most common way of colouring Mandelbrot images is by taking the number of iterations required to reach a certain bailout value and then assigning that value a colour. This is called the escape time algorithm.

A program that colours the Mandelbrot set using a point-based orbit trap will assign each pixel with a “distance” variable, that will typically be very high when first assigned:

double distance = 10e5

As the program passes the complex value through the iterative function it will check the distance between each point in the orbit and the trap point. The value of the distance variable will be the shortest distance found during the iteration:

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;
}

References

  • {{citation
  • {{citation
Info: Wikipedia Source

This article was imported from Wikipedia and is available under the Creative Commons Attribution-ShareAlike 4.0 License. Content has been adapted to SurfDoc format. Original contributors can be found on the article history page.

Want to explore this topic further?

Ask Mako anything about Orbit trap — get instant answers, deeper analysis, and related topics.

Research with Mako

Free with your Surf account

Content sourced from Wikipedia, available under CC BY-SA 4.0.

This content may have been generated or modified by AI. CloudSurf Software LLC is not responsible for the accuracy, completeness, or reliability of AI-generated content. Always verify important information from primary sources.

Report