Scratchで禰豆子模様を描いてみた。

2021-01-26

ときどき見かける、プログラムで鬼滅の刃に出てくる竈門禰豆子の着物柄(麻の葉模様)を描く問題にScratchで挑戦してみました。

ちなみに、学生のころ数学は苦手で、今回ようやくサインコサインについて理解した気がします(汗)なので、もっと効率がいい描き方があるかもだけど、とりあえず完成しました。

作り方

準備

拡張機能で「ペン」を追加します。

ステージをピンクに塗ります。

スプライトは、初期のスクラッチキャットのままでも問題ないけど、なんとなく上から見た絵の「Cat 2」に変更してみました。珠世さんの猫です。

初期化

画面左上から描き始めます。

二等辺三角形の斜辺の長さを、変数「斜辺の長さ」で指定して、模様のサイズを調整できるようにしました。

もう少し作り込めば、縦横の繰り返し回数も計算で出せると思うけど、これでいきます。

二等辺三角形を描くブロックを作る

模様を作る一番小さい二等辺三角形を描きます。

底辺の長さは、2×斜辺の長さ×cos底角。

あとから気づいたけど、画像の変数名が古いままでした。

  • 短辺の長さ → 斜辺の長さ
  • 長辺の長さ→底辺の長さ

正三角形を描くブロックを作る

二等辺三角形を120度ずつ回転させながら3つ描いて、正三角形を作ります。

正六角形を描くブロックをつくる

正三角形を60度ずつ回転させながら6つ描いて、正六角形を作ります。

「○歩動かす」ブロックは、スプライトの位置調整の為。

正六角形を横にずらす

X方向に、二等辺三角形の底辺の長さ分移動して、再度正六角形を描きます。正三角形2個分は、1回めの正六角形で既に描かれた線をなぞるので無駄な動きになります。

六角形でなく、上図のような図形を描けば無駄な描画は無くせるけど、このままでいきます。

正六角形を縦にずらす

1段目を右端まで描いたら、二段目の左端に移動します。

-Y方向への移動距離は、
  正六角形の高さ
 =正三角形の高さ×2
 =底辺の長さ×sin60×2。

全体