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" を選べば、WindowsMacLinuxの上で動くアプリケーションを生成することもできる。
これはなかなか便利だ。