アニメ『クロックワーク・プラネット』(2017)
歯車がぐりぐり動きます。歯車好きにはたまらないです。主人公は耳が良くて、4億以上ものパーツの音を聞き分けてしまいます。この能力ぞくぞくします。ストーリーの展開もいいし、都道府県がまるごとパージできる歯車ってところも壮大で面白い。エンディング曲もいいです。ところで最近歯車が出てくるアニメが多いですねえ。
歯車ということで、インボリュート曲線を描いてみます。
1 use Math::Trig;
2
3 $r=50;
4 open(OUT,">/tmp/tmp.svg");
5 print OUT<<EOL;
6 <svg width="640" height="640">
7 <rect x="0" y="0" width="640" height="640" fill="white"></rect>
8 <circle cx="320" cy="320" r="$r" fill="none" stroke="red" />
9 EOL
10
11 for($t=0; $t<360;$t+=15){
12 $rad=$t*pi/180;
13 $x=320 + cos($rad)*$r ;
14 $y=320 - sin($rad)*$r ;
15 printf OUT '<line x1="320" y1="320" x2="%d" y2="%d" stroke="black"/>',$x,$y;
16 print OUT "\n";
17
18 $ix=$r;
19 $iy=-($t*pi*2.0*$r/360.0);
20 $x2 = 320 + (cos($rad)*$ix -sin($rad)*$iy);
21 $y2 = 320 - (sin($rad)*$ix + cos($rad)*$iy);
22 printf OUT '<line x1="%d" y1="%d" x2="%d" y2="%d" stroke="black"/>',$x,$y,$x2,$y2;
23 print OUT "\n";
24
25 }
26
27 print OUT "</svg>";
28 print OUT "\n";
29 $cmd="inkscape -z -e out.png /tmp/tmp.svg";
30 system($cmd);

この糸の先をつなげていけばインボリュート曲線となります。
少し改造するだけです。
1 use Math::Trig;
2
3 $r=50;
4 open(OUT,">/tmp/tmp.svg");
5 print OUT<<EOL;
6 <svg width="640" height="640">
7 <rect x="0" y="0" width="640" height="640" fill="white"></rect>
8 <circle cx="320" cy="320" r="$r" fill="none" stroke="red" />
9 EOL
10
11 for($t=0; $t<360;$t+=1){
12 $rad=$t*pi/180;
13 $ix=$r;
14 $iy=-($t*pi*2.0*$r/360.0);
15 $x2 = 320 + (cos($rad)*$ix -sin($rad)*$iy);
16 $y2 = 320 - (sin($rad)*$ix + cos($rad)*$iy);
17 printf OUT '<circle cx="%d" cy="%d" r="2" fill="blue" />',$x2,$y2;
18 print OUT "\n";
19
20 }
21
22 print OUT "</svg>";
23 print OUT "\n";
24 $cmd="inkscape -z -e out.png /tmp/tmp.svg";
25 system($cmd);
できました。

コメント