math.png3,3 Мб, 2048x2300
Двач, что скажешь? Черным выделена формула зависимости 76790 В конец треда | Веб
Двач, что скажешь?

Черным выделена формула зависимости шестнадцатеричного индекса цвета пикселя от порядкового номера x и y от центра изображения. Полуается геометрическая сетка из пузырей.

Анимации на js
Для исходного изображения n принято за единицу

(function(){ var R = 256; var D=2R;
var pow = Math.pow; var floor=Math.floor;
var ceil_log16 = function(col) { return col.toString(16).length; }
rgb = function(x, y){ return floor( (x
xn+yyn)pow(16, ( 6-ceil_log16(xxn+yyn)) ) ); }
document.body.innerHTML=('<canvas id="C" width="'+D+'" height="'+D+'"></canvas>');
var canvas = document.getElementById('C');
var ctx = canvas.getContext('2d');
window.n=0; var si = setInterval(function () {
window.n += 1;
for(var x = 0;x<R;x++) {
for(var y = 0;y<R;y++) {
ctx.fillStyle='#'+rgb(x, y, n).toString(16);
var X1 = R-x-1;
var Y1 = R-y-1;
var X2 = R+x;
var Y2 = R+y;
if ( ( xx+yy ) < R*R ) {
ctx.fillRect(X1, Y1, 1, 1);
ctx.fillRect(X1, Y2, 1, 1);
ctx.fillRect(X2, Y1, 1, 1);
ctx.fillRect(X2, Y2, 1, 1);
} } } }, 100);
})();

Код можно выполнить прямо в консоли браузера
2 76792

>return floor( (xxn+yyn)pow(16, ( 6-ceil_log16(xxn+yyn)) ) );


Тут съело 5 знаков умножения
Правильно будет return floor( (x умножить x умножить n + y умножить у умножить n) умножить pow(16, ( 6- ceil_log16(x умножить x умножить n + y умножить у умножить n)) ) );
3 76800
>>76790 (OP)
ДИХЛОФОС СЮДА БЫСТРО СКОРЕЕ !!!
ТАРАКАНЫ НАБЕГАЮТТ
sage 4 76801
>>76790 (OP)

>Двач, что скажешь?


В /pr/
5 76806
>>76801
Тут я хочу больше обсудить математическую формулу.
6 76810
>>76806
Очевидно что 16 в 6 степени минус логарифм по основанию 16 сумм квадратов двух чисел дают некий магический эффект
7 76811
>>76790 (OP)
Если бы формула была честной и точка $(x,y)$ красилась бы в этот цвет то была бы полная вращательная симметрия. Вращательной симметрии не наблюдается потому что ты красишь именно пиксели, а не точки. Пузыри возникают как раз из-за этого эффекта "пиксели vs точки", потому что на окружностях $x^2+y^2 = C$ лежат разное количество целых точек в зависимости от $C$. Нечто похожее будет если покрасить на единичной сфере все рац точки с знаменателями $> C$ например, тоже будут пузыри. Картинка красивая, но с точки зрения математики не сильно интересная.
8 76815
>>76811
пипец. Кем ты работаешь?
9 76816
>>76815
Я аспирант математик.
10 76817
>>76810
Это аналогично дописыванию нулей справа до 6 стимволов в 16-ричной записи числа, или обрезанию символов после шестого. Таким образов соседние пикселы могут как резко отличаться по значению RGB, так и быть ближе к равным. Из-за этого получается пузырьковая сетка.
11 76818
>>76811
Мне давно интересен этот глиф. Но когда смог его записать в виде формулы, стало уже не так интерсно.
puziri.png2,1 Мб, 2880x1132
12 76819
>>76818
>>76817
Да это формула и логарифмы не при чём вообще, опять же, вбей $100(x^2+y^2)$ вместо своей, будут те же самые пузыри. Любая функция зависящая только от $x^2+y^2$ даст то же самое. Ну потому что дело не в формуле а в том как распределены целые точки на окружностях $x^2+y^2=C$, а это не меняется от того какую именно $f(x^2+y^2)$ ты выберешь (от $f$ зависит только "радиальное" распределение цветов).
14 76829
>>76819
Без формулы пузыри не вложенны друг в друга, и фрактал не получается, а так да, умножение дает сдвиг в RGB координатах
15 76830
(function(){ var R = 256; var D=2R+1;
var pow = Math.pow; var floor=Math.floor;
var ceil_log16 = function(col) { return col.toString(16).length; }
rgb = function(x, y){ return floor( (x
xn+yyn)100 ); }
document.body.innerHTML=('<canvas id="C" width="'+D+'" height="'+D+'"></canvas>');
var canvas = document.getElementById('C');
var ctx = canvas.getContext('2d');
window.n=0; var si = setInterval(function () {
window.n += 1;
for(var x = 0;x<=R;x++) {
for(var y = 0;y<=R;y++) {
ctx.fillStyle='#'+rgb(x, y, n).toString(16);
if (x===0&&y===0) ctx.fillStyle="#000000";
var X1 = R-x;
var Y1 = R-y;
var X2 = R+x;
var Y2 = R+y;
if ( ( xx+yy ) < R*R ) {
ctx.fillRect(X1, Y1, 1, 1);
ctx.fillRect(X1, Y2, 1, 1);
ctx.fillRect(X2, Y1, 1, 1);
ctx.fillRect(X2, Y2, 1, 1);
} } } }, 100);
})();

>лучше так, чтобы фрактал не был деформированным

16 76831
>>76830
(function(){ var R = 256; var D=2R+1;
var pow = Math.pow; var floor=Math.floor;
var ceil_log16 = function(col) { return col.toString(16).length; }
rgb = function(x, y){ return floor( (x
xn+yyn)pow(16, ( 6-ceil_log16(xxn+yyn)) ) ); }
document.body.innerHTML=('<canvas id="C" width="'+D+'" height="'+D+'"></canvas>');
var canvas = document.getElementById('C');
var ctx = canvas.getContext('2d');
window.n=0; var si = setInterval(function () {
window.n += 1;
for(var x = 0;x<=R;x++) {
for(var y = 0;y<=R;y++) {
ctx.fillStyle='#'+rgb(x, y, n).toString(16);
if (x===0&&y===0) ctx.fillStyle="#000000";
var X1 = R-x;
var Y1 = R-y;
var X2 = R+x;
var Y2 = R+y;
if ( ( xx+yy ) < R*R ) {
ctx.fillRect(X1, Y1, 1, 1);
ctx.fillRect(X1, Y2, 1, 1);
ctx.fillRect(X2, Y1, 1, 1);
ctx.fillRect(X2, Y2, 1, 1);
} } } }, 100);
})();

>Поправка

16 76831
>>76830
(function(){ var R = 256; var D=2R+1;
var pow = Math.pow; var floor=Math.floor;
var ceil_log16 = function(col) { return col.toString(16).length; }
rgb = function(x, y){ return floor( (x
xn+yyn)pow(16, ( 6-ceil_log16(xxn+yyn)) ) ); }
document.body.innerHTML=('<canvas id="C" width="'+D+'" height="'+D+'"></canvas>');
var canvas = document.getElementById('C');
var ctx = canvas.getContext('2d');
window.n=0; var si = setInterval(function () {
window.n += 1;
for(var x = 0;x<=R;x++) {
for(var y = 0;y<=R;y++) {
ctx.fillStyle='#'+rgb(x, y, n).toString(16);
if (x===0&&y===0) ctx.fillStyle="#000000";
var X1 = R-x;
var Y1 = R-y;
var X2 = R+x;
var Y2 = R+y;
if ( ( xx+yy ) < R*R ) {
ctx.fillRect(X1, Y1, 1, 1);
ctx.fillRect(X1, Y2, 1, 1);
ctx.fillRect(X2, Y1, 1, 1);
ctx.fillRect(X2, Y2, 1, 1);
} } } }, 100);
})();

>Поправка

17 76838
https://github.com/4eckme/Tetrascope/blob/main/tetrascope.play.js
Вот, записал код нормально, с пояснениями. И чтоб знаки не съедал парсер. По прежнему код можно выполнить в консоли браузера
18 76840
>>76828
Если смотреть на него более 8000 секунд, то анимация замедляется и можно разглядеть бесконечно красивые узоры в малых кругах, и они совершенно разные, переходящие друг-в друга.

Это же доступно и для js кода при больших значениях n - мы таким способом масштабируем бесконечный фрактал.
19 76852
>>76811
по этой теории, если мы перемещаем окно с изображением по экрану, то узоры должны меняться
20 76856
>>76840
а можешь сделать чтобы круг перемещался вправо по экрану и отрубить остальную анимацию?
21 76860
>>76838
какое же мерзное отвратительное тараканье говно
22 76862
>>76852
Не понимаю о чём ты
23 77594
>>76790 (OP)

>Двач, что скажешь?


Ну красиво, что сказать, но не математика.
24 84037
>>76790 (OP)
Это очень красиво.
Обновить тред
« /math/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее