テオ・ヤンセン展に行って衝撃を受け、あのビーチアニマルの足の機構の動きを自分で何とか表現できないか?と思いグラフィック系をちょっと弄ってみた。
何をどうすればいいのかサッパリ分からず、どういうライブラリを使えばいいのかも分からないまま、「GD.pm」というのがあるらしい、ということでちょっと使ってみた。
CPANからは上手くインストールできなかったので、MacPorts経由でインストール。
$ sudo port install p5-gd
で、よくわからないままとりあえず何か書いてみた。
#!/opt/local/bin/perl use strict; use warnings; use GD; use Math::Trig 'pi'; my $image = GD::Image->new(100, 100); # 色の設定 my $white = $image->colorAllocate(0xFF, 0xFF, 0xFF); my $red = $image->colorAllocate(0xFF, 0x00, 0x00); my $blue = $image->colorAllocate(0x00, 0x00, 0xFF); # GIFデータの作成 my $gifdata = $image->gifanimbegin(1, 0); for (1..36) { my $angle = $_ * 10; # 各フレームの作成 my $frame = GD::Image->new($image->getBounds); draw_frame($frame, $angle); $gifdata .= $frame->gifanimadd(0, 0, 0, 1); } $gifdata .= $image->gifanimend; # データの書き出し binmode STDOUT; print $gifdata; sub draw_frame { my $image = shift; my $arg = pi() / 180 * shift; # (50, 50)を中心として直径50の円 $image->arc(50, 50, 50, 50, 0, 360, $blue); # 中心から円周上へ、偏角$argの線分 $image->line(50, 50, 50 + 25 * cos($arg), 50 - 25 * sin($arg), $red); }
リダイレクト出力して保存すると完成。
$ ./gd_test.pl > result.gif
とりあえず出来たっぽい。
ここから上手く発展させていけるかな…