Архив метки: фракталы

Фракталы — использование WebGL

Общее описание сайта и математическая теория здесь; рисование при помощи фоновых потоков выполнения обрисовано здесь.

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

Использование GPU для рисования фракталов упрощается за счет двух факторов:

  • Цвет пикселей изображения, которое необходимо получить, определяется исключительно расположением пикселя. Это значит, что процесс рисования можно эффективно распараллелить без использования особых ухищрений. Поскольку в современных графических платах количество пиксельных конвейеров (то есть модулей для определения цвета пикселей) составляет порядка сотни, фрактал будет генерироваться значительно быстрее, чем при использовании CPU.
  • Для вычисления цвета не используются экстраординарные математические понятия; весь процесс сводится к преобразованию пар действительных чисел при помощи базовых функций (exp, log, геометрические и обратные геометрические).

Continue reading

Фракталы — использование Web Workers API

Общее описание сайта и математическая теория здесь.

После того, как определен способ вычисления функции f (за счет синтаксического разбора), остается вычислить «скорость убегания» P(z, f) для комплексных чисел z, соответствующих отдельным пикселям изображения. Наиболее простой способ вычислений — цикл по всем пикселям. Фатальный недостаток этого метода состоит в том, что подсчеты занимают существенное время (порядка нескольких секунд или десятков секунд), и во время выполнения цикла браузер перестает отвечать на внешние раздражители, что, разумеется, неприемлемо. К счастью, для этой проблемы есть решение — современные браузеры (Firefox, Chrome, IE 10+) поддерживают выполнение JavaScript-кода в фоновых потоках выполнения.

Continue reading

Фракталы — синтаксический разбор арифметических выражений

Общее описание сайта и математическая теория создания фрактальных изображений здесь.

Одна из основных задач, которые пришлось решить в ходе создания сайта «Fun with Fractals», заключается в следующем:

Задача. На основе понятного для человека описания функции комплексного переменного составить ее представление, позволяющее вычислять ее значения при помощи JavaScript или WebGL.

Continue reading

Фракталы — общее описание

Сайт Fun with Fractals — небольшой проект, наглядно демонстрирующий возможности HTML5 на примере фракталов:

  • элемент HTML5 <canvas> для рисования (<canvas>, HTMLCanvasElement);
  • фоновые потоки выполнения JavaScript для ускорения процесса рисования и избавления от «подвисания» браузера;
  • WebGL для рисования с помощью графического ускорителя вместо JavaScript (значительно быстрее).

В результате получаются достаточно красивые картинки:

Фрактал №1
ссылка на сайт
Фрактал №2
ссылка на сайт
Фрактал №3
ссылка на сайт

Continue reading