Matrixとコンピュータ
── 野中文雄 ──

投稿:  著者:


9月に大阪で催された「Flash Power Session 2008」で、筆者は「Matrix」をお題にした。といっても、「斬新な映像で映画界に革命を起こし」た(Wikipedia「マトリックス(映画)」)あの作品のことではない。ここでいう「Matrix」は、「コンピュータの作り出した仮想現実空間」(前掲Wikipedia)ではなく、数学の「行列」を意味する。

最近のFlashのActionScriptでは、行列があちこちに顔を出す。座標空間のオブジェクトに変形を加えて3次元表現するとか、画像の彩度を変えたり、エンボス、輪郭検出といった効果をフィルタで与えたりする場合も、行列によって操作する。

本稿では、ActionScriptや数学の計算式そのものはなるべく書かずに、行列をコンピュータの処理で扱う意味について、雑感を交えつつ述べてみたい。



行列で何ができるかというと、同じパターンの計算がまとめて行える。たとえば、つぎのような連立2元1次方程式があったとする。なお、2元というのは、変数がxとyのふたつあることを示す。

ax + by = p
cx + dy = q

これが、行列を使えば以下のように1行で示せる。解を求める式も、きわめてシンプルだ。しかも、連立100元1次方程式になっても、この式はまったく変わらない。

AX = P
[解] X = (A^-1)P (A^-1はAの逆行列を示す)

筆者が高校生だった30年も前の昔には、文系でも行列や微分・積分は必修だった。しかし正直、行列は計算が面倒で嫌いだった。紹介した連立方程式の例でも、確かに「式」は簡潔になる。しかし、行列にはもとの方程式と同じ数の数値(係数)が含まれる。つまり、決して「計算」の手間が省けるわけではないのだ。

だからといって、「式」の表現に意味がないとはいえない。以前、小学校5年生の娘の算数の時間に、授業参観したことがある。そのとき、こんな計算問題が出された。

「1mあたり100円のリボンを買って、40cmのリボンを30人分用意するにはいくらかかるか」

娘を含めてほとんどの子は、40cmに30を掛け、さらにそれをメートルに直している。ところが、ひとりの子が、4×3の12m必要なので1,200円だと答えた。大人であれば、何の不思議もない計算だろう。(40×30)÷100 = (40÷10)×(30÷10)だからである。

ところが、子どもたちにとっては、40cmと30人とをなぜそれぞれ10で割ってよいのかがわからない。とくに小学校の算数では、式の意味というものを考えさせる。実際、4×3の4と3が何を意味するか説明しようとすれば難しい。

私たちは単に、四則演算は掛け算と割り算の順序を変えても答えは同じで、その対象がリボンなのか長さなのか人数なのかは気にしなくてよいということを知っているだけだ。これは、「式」で表すことにより、対象を抽象化していることになる。

翻って行列も、数学や物理を専門にするなら別として、要は数値をまとめて計算するための規則の集まりと捉えて差支えない。行列で扱うものが、座標空間なのか、画像のカラーなのか、フィルタの効果なのかは気にしなくてよいのだ。

逆に知る必要があるのは、行列にどのような数値を当てはめ、どのような処理つまり計算式を適用すると、結果にどう影響するかということである。それは、フィルタなどのパラメータ設定ダイアログと同じだと考えればよい。どのパラメータをどういじれば、どんな効果が得られるかさえ知っていれば、フィルタは充分使える。

高校の数学でも行列を完全に外すのでなく、その考え方くらい教えてもよいのではないか。その際、面倒な「計算」そのものは、コンピュータに任せてしまう。そもそも、行列の演算というのは、数値の数が多く、計算は機械的で、まさにコンピュータにうってつけの処理だ。

そうして、行列演算を画像の全ピクセルに適用してカラーや効果を変えてみたり、座標を行列で変換して3次元の投影を行ってみる。Flashを使ってもよいだろう。理科の実験のような目に見える結果は、数学に対する興味を惹ける可能性があるように思う。

いずれにしても、多くの人にとっては、行列も四則演算と同じ計算のための道具である。インプットである「式」とアウトプットの計算結果が把握できれば、そのプロセスとなる「計算」そのものはブラックボックスでよく、コンピュータに任せて構わない。そう考えれば、難し気な行列というものも、少し肩の力を抜いて眺めることができるのではないだろうか。

【野中文雄/テクニカルライター、トレーナー、オーサリングエンジニア】
< http://www.fumiononaka.com/
>

全640ページに及ぶ『ActionScript 3.0プロフェッショナルガイド』が、間もなく発売される。変数も使わないフレームアクションからスタートしながらも、ゴールはクラス定義の応用や行列を使った3次元座標空間の扱いにまでわたる。FumioNonaka.comの書籍紹介には、初めの2章をPDF(最終校正原稿)で公開中。

『ActionScript 3.0プロフェッショナルガイド』(毎日コミュニケーションズ)
< http://www.fumiononaka.com/Books/ActionScript3ProfessionalGuide.html
>

photo
ActionScript3.0 プロフェッショナルガイド
野中 文雄
毎日コミュニケーションズ 2008-10-18

FLASH OOP for ActionScript 3.0 初めてのActionScript 3.0 Flashユーザーのためのステップアップガイド 開発のプロが教える 標準Adobe AIR完全解説 (デベロッパー・ツール・シリーズ) Adobe Flash CS3 詳細! ActionScript3.0入門ノート2 (CD-ROM付) ActionScript3.0 ポケットリファレンス (POCKET REFERENCE) (POCKET REFERENCE)

by G-Tools , 2008/10/16