Processingを試してみた
今週から夏休みです。時間があるときはホビープログラミングですね。ということで、前から気になっていたProcessingを試してみた。
Examples \ Processing.org
この辺りにあるサンプルを参考に、色々動かしてみたけれど、アニメーションするCGを簡単に書けるのが素晴らしい。
例えば、画像が拡大縮小・回転させながら飛び回るようなアニメーションは、以下のようなコードになる。
PImage img; int x, y, xx, yy; float a, aa; float s, ss; void setup() { size(500, 500); img = loadImage("hanabi.jpg"); initMove(); } void draw() { move(); background(0); translate(x, y); rotate(a); scale(s); image(img, -img.width/2, -img.height/2); } void initMove() { x = int(random(width)); y = int(random(height)); xx = int(random(10, 20)); yy = int(random(10, 20)); a = 0; aa = 0.1; s = 1; ss = 0.05; } void move() { x = x + xx; if(x < 0 || x > width) { xx = -xx; } y = y + yy; if(y < 0 || y > width) { yy = -yy; } a = a + aa; s = s + ss; if(s < 0.1 || s > 3) { ss = -ss; } }
それなりに長いけど、半分以上は画像の座標や回転率、拡大率を計算するためのコード。表示周りはsetup()とdraw()の中のコードだけ。
同じ事をJavaでやろうとすると、GUIやスレッドの準備だけで、軽くこの2倍以上のコード量になる。
作成したプログラムの配布も簡単。付属の開発環境(PDE)のメニューで "Export" を選ぶだけ。Javaアプレットが生成されるので、それをWeb上で公開すれば良い。
http://www9.plala.or.jp/NAT/program/processing/sketch_rotate/index.html
例えば、こんな感じ。
メニュー "Export Application" を選べば、WindowsやMac、Linuxの上で動くアプリケーションを生成することもできる。
これはなかなか便利だ。