新 3D クラス開発日記(19) ~ パッケージ<5> AqGeom ~
2007/03/09 23:37 - AS3.0
今回説明する AqGeom は、 3D 表現に関わるクラスのうち幾何系のものをまとめたパッケージです。
幾何関連クラスゆえ flash.geom パッケージに属するクラスの拡張的なものだったり、 2D 表現でもそのまま使えそうなものだったりするので、 Aq3D パッケージとは別のパッケージとしてしています。
AqGeom
このパッケージには以下の 3 つのクラスが属しています。
Vector
三次元ベクトル定義クラスです。
flash.geom.Point の拡張版とでもいえるクラスです。
コンストラクタの引数は argument[0] の型を判定し、それによって以下の 2 通りの動きをします。
- argment[0] が Vector 型だった場合
- その引数となった Vector の各プロパティをそのまま引き継ぎます
- argment[0] が Vector 型でなかった場合
- argments[0] ~ argument[2] の 3 個を評価します
- それぞれ Number 型ならその値を、そうでない場合は 0 を、プロパティ x , y, z に順次代入します
ExMatrix
三次元計算を可能にした 4 × 4 マトリクスクラス。 flash.geom.Matrix の拡張版とでもいえるクラスです。
┌ a b c 0 ┐ │ d e f 0 │ │ g h i 0 │ └ tx ty tz 1 ┘
マトリクス要素は上記のようになっており、要素数自体は 4 × 4 の 16個ですが、 最右列は固定のためユーザーが変更できるのは 12 要素のみとなっています。
コンストラクタの引数は argument[0] の型を判定し、それによって以下の 2 通りの動きをします。
- argment[0] が ExMatrix 型だった場合
- その引数となった ExMatrix の各プロパティをそのまま引き継ぎます
- argment[0] が ExMatrix 型でなかった場合
- argments[0] ~ argument[11] の 12 個を評価します
- それぞれ Number 型ならその値を、そうでない場合は 0 を、プロパティに順次代入します
DistortImage
ビットマップ歪曲クラスです。
- face
- 歪曲した BitmapData を描画する表示オブジェクト
- texture
- 歪曲対象の BitmapData
- vSeg , hSeg
- 辺の分割数
BitmapData を歪曲するときには、当該 BitmapData を複数の三角形に分割しますが、 その三角形を作るための縦辺と横辺の分割数を vSeg と hSeg の二つで指定します。
vSeg が縦の辺、hSeg が横の辺の分割数になります。
あまり大きな数値にすると処理が重くなりますが、 小さ過ぎる値では綺麗な歪曲ができません。
以下は DistortImage についてのものではありませんが、原理的には同じことを説明したページです。
「図3 四角形を分割」の部分がそうです。
なお、このクラスは以前説明したとおり sandy のパッケージに含まれているものです。
下記のページによると、vSeg と hSeg の値には同一のものを使うべきとのこと、だそうです。