Треугольник Серпинского: различия между версиями
Материал из Поле цифровой дидактики
Patarakin (обсуждение | вклад) Новая страница: «{{Scripting Tutorials |Description=Как создать треугольник Серпинского }} === Javascript - без рекурсии === <syntaxhighlight lang="javascript" line="1"> var k=Math.sqrt(3)/2; var S=16; var H=512; var W=Math.floor(H/k); document.body.innerHTML=('<canvas id="C" width="'+W+'" height="'+H+'"></canvas>'); var canvas = document.getElementById('C'); var ctx = canvas.getContext('2d'); ctx.fillRect(0, 0, W, H);...» |
Patarakin (обсуждение | вклад) Нет описания правки |
||
| Строка 1: | Строка 1: | ||
{{Scripting Tutorials | {{Scripting Tutorials | ||
|Description=Как создать треугольник Серпинского | |Description=Треугольник Серпинского — фрактал, один из двумерных аналогов множества Кантора, математическое описание которого опубликовал польский математик Вацлав Серпинский в 1915 году. Как создать треугольник Серпинского в разных средах программирования? | ||
}} | }} | ||
=== [[JavaScript]] - без рекурсии === | |||
=== [[ | |||
<syntaxhighlight lang="javascript" line="1"> | <syntaxhighlight lang="javascript" line="1"> | ||
var k=Math.sqrt(3)/2; var S=16; var H=512; var W=Math.floor(H/k); | var k=Math.sqrt(3)/2; var S=16; var H=512; var W=Math.floor(H/k); | ||
Версия от 17:03, 12 декабря 2022
| Описание | Треугольник Серпинского — фрактал, один из двумерных аналогов множества Кантора, математическое описание которого опубликовал польский математик Вацлав Серпинский в 1915 году. Как создать треугольник Серпинского в разных средах программирования? |
|---|---|
| Область знаний | |
| Область использования (ISTE) | |
| Возрастная категория |
|
| Поясняющее видео | |
| Близкие рецепту понятия | |
| Среды и средства для приготовления рецепта: |
JavaScript - без рекурсии
var k=Math.sqrt(3)/2; var S=16; var H=512; var W=Math.floor(H/k);
document.body.innerHTML=('<canvas id="C" width="'+W+'" height="'+H+'"></canvas>');
var canvas = document.getElementById('C');
var ctx = canvas.getContext('2d');
ctx.fillRect(0, 0, W, H);
for(var x = 0;x<=Math.floor(W/2);x++) {
for(var y = 0;y<H;y++) {
var A = y; var a = A%S;
var B = y/2+x*k; var b = B%S;
var C = y/2-x*k; var c = C%S;
if(a>b&&C>0&&B>0) {
if ((B/S)&(C/S)) ctx.fillStyle='#ff0';
else ctx.fillStyle='#000';
} else if(a<b&&C>0&&B>0) {
ctx.fillStyle='#0f8';
} else ctx.fillStyle='#fff';
ctx.fillRect(Math.floor(W/2)-x, y, 1, 1);
if (x!=0) ctx.fillRect(Math.floor(W/2)+x, y, 1, 1);
}
}
