Processing の transform(2) ~translate 後編~
2010/06/22 20:38 - Processing
前回は、「Built with Processing[Ver. 1.x対応版] -デザイン/アートのためのプログラミング入門」を読んで、Processing の transform 系メソッドにすっげー違和感! という前振りと、transform 系のメソッドのうち、translate について見てみました。
下のコードは書籍(P91~)に掲載されている translate のサンプルコード(再掲)ですが、今回は、この translate を使ったロジックを、ActionScript で書いたらどういう記述になるのか考えてみたいと思います。
処理動作としては、transform 系のメソッドを実行するとステージそれ自体が動く、しかし既に描画した図形には、その transform が適用されない、ということが起きているような感じを受けます。 ActionScript でそういうこと、やってできないこともなさそうですが、なんかかなり複雑になりそうな予感。
やはりここは1個 Matrix のインスタンスを作って、それで何とかするのが無難でしょう。 で、考えなければならないのは、その Matrix を何に適用するのかということ。
translate を使った作品の見栄えだけを見て、ActionScript で再現するとこうなるだろうというコードを前回、以下のように示しました。
これはドキュメントクラスである DisplayObject 上に graphics を使ってすべての正方形を描いていますが、今検討しているロジックの場合、単一の DisplayObject に複数の正方形を描くのは、かなり厳しいと見た。

ActionScript で、Matrix を使って左図のように正方形を配置する場合、各正方形を描画する DisplayObject をひとつづつ独立したものとして生成し、その各 DisplayObject に Matrix を適用する、という手順を踏むのが一番簡便だと思う。
その考えに則ったコードは以下のようになるんじゃあないでしょうか。 正方形を描く DisplayObject は Shape にしました。
それにしてもこの ActionScript のコードと、その元となった Processing のコードを比べると、Processing はずいぶん簡潔に書けるなぁ、という思いを新たにしますね。
今回は平行移動である translate について見てみましたが、次回からは回転である rotate について考えてみたいと思います。