Орбитальная ловушка

Метод раскрашивания фрактальных изображений
Множество Мандельброта, полученное с помощью комбинации крестообразных и точечных орбитальных ловушек.

В математике орбитальная ловушка — это метод раскрашивания фрактальных изображений, основанный на том, насколько близко итерационная функция , используемая для создания фрактала, приближается к геометрической фигуре, называемой «ловушкой». Типичные ловушки — это точки, линии, круги, формы цветов и даже растровые изображения . Орбитальные ловушки обычно используются для раскрашивания двумерных фракталов, представляющих комплексную плоскость.

Примеры

Орбитальные ловушки множества Мандельброта с помощью радужной раскраски

На основе точек

Точечная орбитальная ловушка окрашивает точку в зависимости от того, насколько близко орбита функции подходит к одной точке, обычно к началу координат.

Линейный

Орбитальная ловушка на основе линий окрашивает точку в зависимости от того, насколько близко орбита функции подходит к одной или нескольким линиям, обычно вертикальным или горизонтальным (линии x=a или y=a). Примером орбитальной ловушки на основе линий, которая использует две линии, являются стебли пиковера .

Анимация набора Julia с переменной площадью опоры изображения, используемая в качестве орбитальной ловушки.

Алгоритм

Орбитальные ловушки обычно используются с классом двумерных фракталов, основанных на итеративной функции. Программа, которая создает такой фрактал, раскрашивает каждый пиксель, представляющий дискретные точки в комплексной плоскости, на основе поведения этих точек, когда они проходят через функцию заданное количество раз.

Самым известным примером такого рода фрактала является множество Мандельброта , которое основано на функции z n +1 = z n 2 + c . Наиболее распространенный способ раскрашивания изображений Мандельброта — это взятие числа итераций, необходимых для достижения определенного значения спасения, а затем назначение этому значению цвета. Это называется алгоритмом времени спасения.

Программа, которая раскрашивает множество Мандельброта с помощью точечной орбитальной ловушки, назначает каждому пикселю переменную «расстояние», которая обычно будет очень большой при первом назначении:

двойное расстояние = 10 e5   

Поскольку программа передает комплексное значение через итеративную функцию, она будет проверять расстояние между каждой точкой орбиты и точкой ловушки. Значение переменной расстояния будет кратчайшим расстоянием, найденным во время итерации:

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 ++ ) { // Выполнить итерацию Мандельброта z = z.multiple ( z ) ; z = z.add ( c ) ; // Установить новое расстояние 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 ; }                                                          

Ссылки

  • Карлсон, Пол В. (1999), «Два художественных метода визуализации орбитальной ловушки для фракталов Ньютона M-множества», Компьютеры и графика , 23 (6): 925– 931, doi :10.1016/S0097-8493(99)00123-5.
  • Лу, Цзянь; Е, Чжунсин; Цзоу, Юру; Е, Жуйсонг (2005), «Методы визуализации орбитальных ловушек для создания художественных изображений с кристаллографической симметрией», Компьютеры и графика , 29 (5): 787– 794, doi :10.1016/j.cag.2005.08.008.
Взято с "https://en.wikipedia.org/w/index.php?title=Orbit_trap&oldid=1187151019"