Треугольник Серпинского

Материал из Поле цифровой дидактики
Версия от 17:01, 12 декабря 2022; 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);...»)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Описание Как создать треугольник Серпинского
Область знаний
Область использования (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);
  }
}