ActionScript 3.0で始めるオブジェクト指向スクリプティング

第51回 ベクトルの内積で面の向きを調べる

この記事を読むのに必要な時間:およそ 5.5 分

今回から,おもに3次元空間で回すネタを深堀りすると予告した。少し手の込んだ回転のアニメーションを考えると,どうしても立ちはだかってくるのは,ベクトルと三角関数だ。これから数回にわたって,ベクトルの内積・外積と三角関数を使ったお題に取り組む。

といっても,数学的にきっちり理解しなくてもよい。エンジンやサスペンションの仕組みは知らなくても,機能さえわかれば車は運転できる。もっと実感しやすい例でいえばフィルタだ。きわめて高度な数学演算の結果を,筆者も含めて多くのユーザーは内部処理を知らぬまま使っている。ただ,どのパラメータが結果にどう反映されるかさえわかっていればよいからだ。

もっとも,できれば内部的な処理を知りたいマニアックな読者もいるだろう。筆者もその気持ちはわかる。そこで,順序を逆転して数学的な計算や理由づけは,基本的に後から解説するかたちをとる。苦手な読者は,文脈を見失わない程度に流し読みしてもらって構わない。

お題の説明と準備

本論に入る前に,とくにマニアックな読者にひとつご注意したい。ベクトルの内積や外積が,何を意味するのかという疑問は,取りあえず先送りしてほしい。結論からいえば,筆者はその適切な答えをもっていない。だが,それは円周率πでも同じだろう。πとは何かと問われたとき,それは約3.14だとか,もう少し厳密にいうなら円周の直径に対する比率と一応は答えられる。

けれど,質問者が訊きたいのは,その数値の具体的な意味だ。この問いには,円の面積が求められるというくらいしか答えづらい。筆者はそれでよいと考える。Photoshopの初心者に,⁠雲模様」のフィルタは何をするものなのかと尋ねられたときと同じだ。数学でもPhotoshopでも,それをツールとして使うのであれば,何ができるのか,どのように使うのかがわかれば足りる。

今回採上げるベクトルの内積では,面が表か裏かを見分ける。ネタとしては,第48回「テクスチャに遠近法を適用する - uvt座標の指定」スクリプト2に手を加えることにしよう第48回図2再掲)⁠

第48回 図2 回転のMatrix3Dオブジェクトに透視(遠近法)投影の変換を加える(再掲)

第48回 図2 回転のMatrix3Dオブジェクトに透視(遠近法)投影の変換を加える(再掲)

画像 画像

画像 画像

第48回スクリプト2は,3次元空間で正方形の頂点座標をマウスポインタの位置に合わせて水平に回し,テクスチャマッピングした(前掲第48回図2)⁠今回はビットマップをもうひとつ加え,正方形の裏と表で異なるテクスチャをマッピングする図1)⁠

図1 3次元空間で水平に回る正方形の裏と表に異なるテクスチャをマッピングする

図1 3次元空間で水平に回る正方形の裏と表に異なるテクスチャをマッピングする

まず準備として,回る正方形の裏に貼るビットマップを[ライブラリ]に加える。そして,スクリプトからインスタンスがつくれるように,⁠クラス]を設定しておく図2)⁠今回のサンプルでは「Image2」とした(クラスを設定する手順については,第34回3次元空間における回転「ビットマップのインスタンスを動的に配置する」参照)⁠

図2 ⁠ライブラリ]に加えたビットマップに[クラス]を設定

図2 [ライブラリ]に加えたビットマップに[クラス]を設定

著者プロフィール

野中文雄(のなかふみお)

ソフトウェアトレーナー,テクニカルライター,オーサリングエンジニア。上智大学法学部卒,慶応義塾大学大学院経営管理研究科修士課程修了(MBA)。独立系パソコン販売会社で,総務・人事,企画,外資系企業担当営業などに携わる。その後,マルチメディアコンテンツ制作会社に転職。ソフトウェアトレーニング,コンテンツ制作などの業務を担当する。2001年11月に独立。Web制作者に向けた情報発信プロジェクトF-siteにも参加する。株式会社ロクナナ取締役(非常勤)。

URLhttp://www.FumioNonaka.com/

著書

コメント

コメントの記入