Вы не авторизованы.

Fragmentarium-Distance Estimated часть 3

Данная статья является непосредственным продолжением части 1 и части 2. Несмотря на свой молодой возраст, Mandelbulb, вероятно, самый известный существующий 3D - фрактал. Но прежде чем мы перейдем к Mandelbulb, мы должны сделать шаг назад и пересмотреть немного историю.

В поисках Святого Грааля

Оригинальный фрактал Мандельброта представляет собой двумерный фрактал на основе конвергенции свойств серии комплексных чисел. Формула очень проста: для любого комплексного числа Z, последовательность определяется итеративно Z
N +1 =Z
2
N + C или расходится, или нет.

Множество Мандельброта определяется как множество точек, которые не расходятся, то есть точки с ряда, который остается ограниченным в пределах заданного радиуса. Результаты могут быть изображены на комплексной плоскости. Вопрос в том, как увеличить этот фрактал до трех измерениях. Множество Мандельброта соответствует двум размерам, так как комплексные числа состоят из двух компонентов. Можем ли мы найти аналогичную систему чисел для трех измерений? Формула Мандельброта состоит из двух операций: сложение чисел, а затем их возведение в квадрат. Создание n- номера компонент хорошая возможность. Это то, что математики называют векторным пространством. Покомпонентное дополнение будет делать свое дело и кажется логичным выбором. Но формула Мандельброта также включает в себя возведение в квадрат числа, которое требуется оператором умножения (векторное произведение) на векторном пространстве. Векторное пространство с (билинейное) с векторным произведением называется алгеброй над полем. Цифры в подобных векторных пространствах часто называют гиперчислами.

 Чтобы понять, почему трехмерные системы счисления может быть проблематичным, давайте попробуем их создать. Мы могли бы сделать это, начав с комплексными числами и ввести третий компонент, J. Мы постараемся сохранить как можно больше из характерных свойств комплексных и вещественных чисел, такие как дистрибутивности, а * (b + c) = (a * b) + (а* с) и коммутативности, a * b = b *а. Если мы предполагаем дистрибутивность, мы только должны указать, как юниты трех компонентов размножаются. Это может быть проиллюстрировано в таблице умножения. Так как мы и предполагали коммутативность, такая таблица должна быть симметрична:

К сожалению, наша система выше не может быть ассоциативной (т.е. это не всегда верно, что a * (b * c) = (a * b) * c), как можно видеть, глядя на уравнения

i * (i * j) = (i * i) * j ⇒ i * х =-j, которые не могут быть выполнены независимо от того, каким мы выбрали х.

 Получается, что трудно создать последовательную систему счисления в трех измерениях. Там просто нет естественного выбора. В самом деле, если бы мы потребовали, чтобы наша система счисления позволяла оператор деления, есть теорема о том, что возможны только четыре таких математических пространства: действительные числа (1D), комплексные числа (2D), кватернионов  (4D) и октонионов (8D). Но нет 3D систем.

 Но как насчет 4D Кватернионы? В 1982 году Алан Нортон опубликован документ, показывающий, как Жюлиа Кватернион сделан путем отображения 3D "среза" пространства 4D. Вот пример фрактала кватерниона Жюлиа:

Конечно, для того, чтобы визуализировать объект 4D, вы должны сделать какую-то размерную редукцию. Наиболее распространенным подходом является создание 3D - сечения, просто держа один из четырех компонентов при фиксированном значении. Если вы удивляетесь, почему вы никогда не увидите изображения Кватерниона Мандельброта, причина проста. Это не очень интересно, потому что его осевая симметрия:

Если вы, однако, сделаете вращение внутри цикла итерации, вы можете получить нечто более похожее на 3D Мандельброта.

Кватернионная система (и гиперкомплексная система 3D) определяются так же, как 2D-системы - путем проверки z

n +1 =
z
2
n + c сходится или нет. Но как мы можем нарисовать 3D-изображения этих фракталов? В отличие от случаев 2D, где можно построить 2D сетки, а также проверить наполнение каждой ячейки, создание 3D сетки и проверка каждой ячейки будет забирать много памяти и отнимает много времени для изображений в любом приличном разрешении.

 DE для квадратичных систем.

 В то время как Алан Нортон использовал другой подход рендеринга, очень элегантное решение этого был найден Джоном Хартом и др. в 1989 в работе: рендеринг DE. Как уже говорилось в предыдущих ранее, рендеринг оценки расстояния требует, что мы в состоянии рассчитать нижнюю границу расстояния от каждой точки пространства в нашей фрактальной поверхности! Во-первых, это может показаться невозможным. Но, оказывается, такая формула уже была известна для множества 2D Мандельброта. Оценку расстояния можно найти как:

(1) DE = 0,5 * ln ( r) * r / dr ,

где «r» является длиной времени выхода и «dr»  есть длина идущей производной. (Приближение точно только в пределе, когда число итераций стремится к бесконечности). Для того, чтобы определить, что мы подразумеваем под производной работает , нам нужно несколько дополнительных определений. Для множеств Мандельброта , мы изучаем последовательность z

n +1 =
z
2
n + c для каждой точки с.

Давайте введем функцию fn(с), определяющей как n-я запись для последовательности с точкой с. По этому определению, мы имеем следующую формулу для определения множества Мандельброта:

fn(c)=f2n−1(c)+c,f0(c)=0

 Вывод этой функции по отношению к c, дает

(2)   f′n(c)=2fn−1(c)f′n−1(c)+1 (для Формулы Мандельброта)

 Похоже, множество Жюлиа определяется выбором фиксированной константы, d, в квадратичной формуле, используя c только в качестве первой записи в нашей последовательности:

fn(c)=f2n−1(c)+d,f0(c)=c

Вывод этой функции по отношению к c, дает:

(3)   f′n(c)=2fn−1(c)f′n−1(c)   (для формулы множества Жюлиа)

 Которая дает почти такой же результат, как и для множества Мандельброта, за исключением блока перспективы. И теперь мы можем определить длину fn, и работу производной fn:

r=|fn(c)| and dr=|f′n(c)|

используемую в формуле (1) выше. Эта формула была найдена Дуади и Хаббардом в 1982 году.

2D визуализация множества Жюлиа с использованием подхода оценки расстояния.

Это позволяет подчеркнуть детали, без использования обширной передискретизации.

Отдельное спасибо за столь подробное разъяснение Mikael  Hvidtfeldts в своем блоге.

перевод: Д.Шахов

Продолжение следует ....

Оцените материал
(0 голосов)
Другие материалы в этой категории: « Fragmentarium-Distance Estimated часть 2 Fragmentarium: урок Android »
Прочитано 335 раз Последнее изменение Пятница, 08 Август 2014 16:33

Оставить комментарий

Убедитесь, что вы вводите (*) необходимую информацию, где нужно
HTML-коды запрещены