М.Двач / Математика

3,3 Мб, 2048x2300
Двач, что скажешь? Черным выделена формула зависимости 4 дек 2020, 02:50 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( (xxn+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);
})();

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

Ответы7680076801768117759484037

2 4 дек 2020, 03:03 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 4 дек 2020, 10:51 3 76800

>>76790 (OP)
ДИХЛОФОС СЮДА БЫСТРО СКОРЕЕ !!!
ТАРАКАНЫ НАБЕГАЮТТ

sage 4 4 дек 2020, 10:56 4 76801

>>76790 (OP)
>Двач, что скажешь?
В /pr/

Ответы76806

5 4 дек 2020, 13:03 5 76806

>>76801
Тут я хочу больше обсудить математическую формулу.

Ответы76810

6 4 дек 2020, 14:10 6 76810

>>76806
Очевидно что 16 в 6 степени минус логарифм по основанию 16 сумм квадратов двух чисел дают некий магический эффект

Ответы76817

7 4 дек 2020, 14:14 7 76811

>>76790 (OP)
Если бы формула была честной и точка $(x,y)$ красилась бы в этот цвет то была бы полная вращательная симметрия. Вращательной симметрии не наблюдается потому что ты красишь именно пиксели, а не точки. Пузыри возникают как раз из-за этого эффекта "пиксели vs точки", потому что на окружностях $x^2+y^2 = C$ лежат разное количество целых точек в зависимости от $C$. Нечто похожее будет если покрасить на единичной сфере все рац точки с знаменателями $> C$ например, тоже будут пузыри. Картинка красивая, но с точки зрения математики не сильно интересная.

Ответы768157681876852

8 4 дек 2020, 15:15 8 76815

>>76811
пипец. Кем ты работаешь?

Ответы76816

9 4 дек 2020, 15:28 9 76816

>>76815
Я аспирант математик.

10 4 дек 2020, 16:25 10 76817

>>76810
Это аналогично дописыванию нулей справа до 6 стимволов в 16-ричной записи числа, или обрезанию символов после шестого. Таким образов соседние пикселы могут как резко отличаться по значению RGB, так и быть ближе к равным. Из-за этого получается пузырьковая сетка.

Ответы76819

11 4 дек 2020, 16:48 11 76818

>>76811
Мне давно интересен этот глиф. Но когда смог его записать в виде формулы, стало уже не так интерсно.

Ответы76819

2,1 Мб, 2880x1132
12 4 дек 2020, 16:56 12 76819

>>76818
>>76817
Да это формула и логарифмы не при чём вообще, опять же, вбей $100(x^2+y^2)$ вместо своей, будут те же самые пузыри. Любая функция зависящая только от $x^2+y^2$ даст то же самое. Ну потому что дело не в формуле а в том как распределены целые точки на окружностях $x^2+y^2=C$, а это не меняется от того какую именно $f(x^2+y^2)$ ты выберешь (от $f$ зависит только "радиальное" распределение цветов).

Ответы76829

13 4 дек 2020, 18:55 13 76828

https://www.shadertoy.com/view/wscBD2

Ответы76840

14 4 дек 2020, 19:06 14 76829

>>76819
Без формулы пузыри не вложенны друг в друга, и фрактал не получается, а так да, умножение дает сдвиг в RGB координатах

15 4 дек 2020, 19:42 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( (xxn+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);
})();

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

Ответы76831

16 4 дек 2020, 19:46 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( (xxn+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 4 дек 2020, 19:46 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( (xxn+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 5 дек 2020, 03:48 17 76838

https://github.com/4eckme/Tetrascope/blob/main/tetrascope.play.js
Вот, записал код нормально, с пояснениями. И чтоб знаки не съедал парсер. По прежнему код можно выполнить в консоли браузера

Ответы76860

18 5 дек 2020, 04:45 18 76840

>>76828
Если смотреть на него более 8000 секунд, то анимация замедляется и можно разглядеть бесконечно красивые узоры в малых кругах, и они совершенно разные, переходящие друг-в друга.

Это же доступно и для js кода при больших значениях n - мы таким способом масштабируем бесконечный фрактал.

Ответы76856

19 5 дек 2020, 13:12 19 76852

>>76811
по этой теории, если мы перемещаем окно с изображением по экрану, то узоры должны меняться

Ответы76862

20 5 дек 2020, 14:07 20 76856

>>76840
а можешь сделать чтобы круг перемещался вправо по экрану и отрубить остальную анимацию?

21 5 дек 2020, 14:37 21 76860

>>76838
какое же мерзное отвратительное тараканье говно

22 5 дек 2020, 16:13 22 76862

>>76852
Не понимаю о чём ты

23 15 дек 2020, 12:39 23 77594

>>76790 (OP)
>Двач, что скажешь?
Ну красиво, что сказать, но не математика.

24 1 июня 2021, 17:58 24 84037

>>76790 (OP)
Это очень красиво.

Обновить тред
« /math/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

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

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

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion