РедактироватьСоздать страницу
Моя фрактальная RGB вселенная

Тетраскоп

Пожалуй всё же надо запилить отдельную статью про это

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

Оригинальная модель тетраскопа

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

Функция зависимости цвета от координат

rgb = function(x, y){ // где x*x+y*y < r*r - математическая формула круга z = x*x+y*y; while(z<'0x100000' && z) z=z<<4; while(z>'0xffffff' && z) z = Math.floor(z/16); return '#'+z.toString(16); }

Создаем canvas в контексте 2d:
var canvas = document.getElementById('C'); var ctx = canvas.getContext('2d');}

Циклично проходимся по всем точкам:
for(var x = 0;x<R;x++) { for(var y = 0;y<R;y++) { var X1 = R-x-1; var Y1 = R-y-1; var X2 = R+x-1; var Y2 = R+y-1; if ( ( x*x+y*y ) <= R*R ) { ctx.fillStyle="#"+( rgb( (x*x+y*y).toString(16)) ); ctx.fillRect(X1, Y1, 1, 1); ctx.fillRect(X1, Y2, 1, 1); ctx.fillRect(X2, Y1, 1, 1); ctx.fillRect(X2, Y2, 1, 1); } } }
R-радиус круга (лучше всего использовать 1024px).

Это JavaScript код для браузера для получения начальной модели.

Фрактальный телевизор

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

Использование шейдеров - еще раз запуская вселенную

Люди с хабра помогли мне реализовать анимацию на шейдерах, которую вы можете видеть в начале страницы. Она большого размера и быстро обновляется, а ее конец там где кончаются сами числа.
#тетраскоп#rgb#модель_вселенной#демо_сцены#шейдеры

перейти к основнойВерсия от 22 ноября 2020 16:12

Комментарии (1)