Processing の transform(5) ~pushMatrix と popMatrix~
2010/06/26 20:58 - Processing
今まで Processing における translate と rotate の挙動を ActionScript で表すとどうなるか見てきました。
scale は同様に考えればいいんで省略。 今回は pushMatrix と popMatrix について考えてみようと思います。

「Built with Processing[Ver. 1.x対応版] -デザイン/アートのためのプログラミング入門」のP95からは pushMatrix と popMatrix の事例が示されています。
実行結果は→のとおりで、コードは↓のとおりです。
今まで見てきた translate と rotate のサンプルと違い、正方形を描く前に rotate と translate を実行していますが、まぁそれはたいしたことないですね。
今まで ActionScript 化してきたことをそのまま敷衍すれば悩むところは何もなし。
関数である pushMatrix、popMatrix には、Array を代用して push と pop を実行でよろしかろう。 その Array に格納するはclone で複製された Matrix3D にする、という寸法になりますね。
そうすると以下のようなコードになると思います。
Processing のコードを見た後だと、ActionScirpt が何とも冗長に見えてしまいますが、私個人的には Processing の記述は簡単すぎて逆に不安になる。
もちろん Processing は簡単に覚えられるように設計されているからこそ、これだけ簡単な記述ができるようになっているんですが、簡単に記述でき過ぎるとそのフリーダムっぷりが何か怖いんですよねー。
特に Processing で一番気に障るのは draw メソッド。 ユーザが明示的に書かなくても繰り返し呼び出されるって部分が、なんかユーザが制御できないって感じで、不安というか怖いというか。
addEventLister で Event.ENTER_FRAME なり TimerEvent.TIMER なりを使って、繰り返し呼び出しを自分で書く ActionScript の方が、まぁタイプ量は増えてめんどうかもしれませんが、自分としては安心ができます。