パッケージflash.geom
クラスpublic class Matrix3D
継承Matrix3D Inheritance Object

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

Matrix3D クラスは、3 次元(3D)表示オブジェクトの位置と方向を決定する変換マトリックスを表します。マトリックスでは、平行移動(x 軸、y 軸および z 軸に沿った位置変更)、回転、拡大 / 縮小などの変換機能を実行できます。Matrix3D クラスでは、遠近法に基づく投影を実行し、3D 座標空間のポイントを 2 次元(2D)ビューにマッピングすることもできます。

1 つのマトリックスで複数の変換を結合し、3D 表示オブジェクトに一括して適用することができます。例えば、マトリックスを 3D 座標に適用して、回転の後に平行移動を実行できます。

表示オブジェクトの z プロパティまたは回転や拡大 / 縮小のプロパティを明示的に設定すると、対応する Matrix3D オブジェクトが自動的に作成されます。

3D 表示オブジェクト内の Matrix3D オブジェクトは、transform.matrix3d プロパティを通じてアクセスできます。2D オブジェクト内には Matrix3D オブジェクトがありません。

2D オブジェクトの z プロパティの値は 0 で、その matrix3D プロパティの値は null です。

注意:同じ Matrix3D オブジェクトを 2 つの異なる表示オブジェクトに割り当てると、ランタイムエラーが発生します。

Matrix3D クラスは 4 × 4 正方マトリックスを使用します。これは、変換用のデータを保持する 4 行 × 4 列の数値のテーブルです。マトリックスの最初の 3 行は 3D の各軸(x、y、z)のデータを保持します。平行移動情報は最後の列に格納されます。方向と拡大 / 縮小のデータは、最初の 3 列に格納されます。倍率は、最初の 3 列の対角線上の数値です。Matrix3D エレメントは次のように表現されます。

Matrix3D エレメント

マトリックスを数学的に理解できなくても Matrix3D クラスを使用できます。Matrix3D クラスには、appendTranslation()appendRotation()interpolateTo() などのメソッドがあり、これらを使用して平行移動や投影の作業を簡単に実行できます。 decompose() メソッド、recompose() メソッドまたは rawData プロパティを使用して、基になっているマトリックスエレメントも使用できます。

表示オブジェクトは軸回転プロパティをキャッシュして、軸ごとに個別に回転を実行し、回転の異なる組み合わせを管理します。表示オブジェクトを変換するために Matrix3D オブジェクトのメソッドが呼び出されると、オブジェクトの回転キャッシュが無効化されます。

関連項目

flash.display.DisplayObject
flash.geom.Transform
flash.geom.PerspectiveProjection
flash.geom.Vector3D
flash.geom.Orientation3D
flash.geom.Utils3D
flash.geom.Matrix
Performing complex 3D transformations


パブリックプロパティ
 プロパティ定義元
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
  determinant : Number
[読み取り専用] マトリックスが反転可能かどうかを決定する数値です。
Matrix3D
  position : Vector3D
変換の参照フレーム内に、表示オブジェクトの位置、つまり 3D 座標(x,y,z)を保持する Vector3D オブジェクトです。
Matrix3D
 Inheritedprototype : Object
[静的] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
  rawData : Vector.<Number>
数値の数が 16 のベクターです。4 つのエレメントごとに 4 × 4 マトリックスの 1 行または 1 列になります。
Matrix3D
パブリックメソッド
 メソッド定義元
  
Matrix3D(v:Vector.<Number> = null)
Matrix3D オブジェクトを作成します。
Matrix3D
  
別の Matrix3D オブジェクトに現在の Matrix3D オブジェクトを乗算して、マトリックスの末尾に追加します。
Matrix3D
  
appendRotation(degrees:Number, axis:Vector3D, pivotPoint:Vector3D = null):void
Matrix3D オブジェクトの末尾にインクリメンタルな回転を追加します。
Matrix3D
  
appendScale(xScale:Number, yScale:Number, zScale:Number):void
x 軸、y 軸、z 軸上のインクリメンタルな拡大 / 縮小の変更を Matrix3D オブジェクトの末尾に追加します。
Matrix3D
  
x 軸、y 軸、z 軸上のインクリメンタルな位置の変更を Matrix3D オブジェクトの末尾に追加します。
Matrix3D
  
現在の Matrix3D オブジェクトを正確にコピーした新しい Matrix3D オブジェクトを返します。
Matrix3D
  
decompose(orientationStyle:String = "eulerAngles"):Vector.<Vector3D>
変換マトリックスの平行移動、回転、および拡大 / 縮小の各設定を、3 つの Vector3D オブジェクトのベクターとして返します。
Matrix3D
  
平行移動エレメントのない変換マトリックスを使用して、Vector3D オブジェクトをある空間座標から別の空間座標に変換します。
Matrix3D
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
  
現在のマトリックスを単位マトリックスに変換します。
Matrix3D
  
interpolate(thisMat:Matrix3D, toMat:Matrix3D, percent:Number):Matrix3D
[静的] 表示オブジェクトがターゲットの表示オブジェクトに 1 パーセントポイント近くなるように補間することで、ある参照フレームから別の参照フレームへの補間を単純化します。
Matrix3D
  
表示オブジェクトのマトリックスが、ターゲットのマトリックスに 1 %近づくように補間します。
Matrix3D
  
現在のマトリックスを反転します。
Matrix3D
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
  
pointAt(pos:Vector3D, at:Vector3D = null, up:Vector3D = null):void
表示オブジェクトが指定された位置を向くように回転します。
Matrix3D
  
現在の Matrix3D オブジェクトに別の Matrix3D オブジェクトを乗算して、マトリックスの先頭に追加します。
Matrix3D
  
prependRotation(degrees:Number, axis:Vector3D, pivotPoint:Vector3D = null):void
Matrix3D オブジェクトの先頭にインクリメンタルな回転を追加します。
Matrix3D
  
prependScale(xScale:Number, yScale:Number, zScale:Number):void
x 軸、y 軸、z 軸上のインクリメンタルな拡大 / 縮小の変更を Matrix3D オブジェクトの先頭に追加します。
Matrix3D
  
x 軸、y 軸、z 軸上のインクリメンタルな位置の変更を Matrix3D オブジェクトの先頭に追加します。
Matrix3D
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
  
recompose(components:Vector.<Vector3D>, orientationStyle:String = "eulerAngles"):Boolean
変換マトリックスの平行移動、回転、および拡大 / 縮小を設定します。
Matrix3D
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
  
変換マトリックスを使用して、Vector3D オブジェクトをある空間座標から別の空間座標に変換します。
Matrix3D
  
変換マトリックスを使用して、数値のベクターをある空間座標から別の空間座標に変換します。
Matrix3D
  
現在の Matrix3D オブジェクトを、行と列が入れ替わったマトリックスに変換します。
Matrix3D
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
プロパティの詳細
determinantプロパティ
determinant:Number  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

マトリックスが反転可能かどうかを決定する数値です。

Matrix3D オブジェクトは反転可能である必要があります。determinant プロパティを使用すると、Matrix3D オブジェクトが反転可能かどうかを確認できます。determinant が 0 の場合、マトリックスの反転は存在しません。例えば、マトリックスの行または列全体が 0 か、2 つの行または列が同じ場合、determinant は 0 になります。determinant は一連の式の解決にも使用されます。

Matrix3D クラスのように、determinant を持つのは正方マトリックスのみです。



実装
    public function get determinant():Number

関連項目

positionプロパティ 
position:Vector3D  [読み書き可能]

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

変換の参照フレーム内に、表示オブジェクトの位置、つまり 3D 座標(x,y,z)を保持する Vector3D オブジェクトです。position プロパティでは、マトリックスを分解して再構成しなくても、表示オブジェクトのマトリックスの変換ベクターにすばやくアクセスできます。

position プロパティを使用すると、変換マトリックスの変換エレメントを取得および設定できます。



実装
    public function get position():Vector3D
    public function set position(value:Vector3D):void

関連項目

rawDataプロパティ 
rawData:Vector.<Number>  [読み書き可能]

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

数値の数が 16 のベクターです。4 つのエレメントごとに 4 × 4 マトリックスの 1 行または 1 列になります。

rawData プロパティが反転できないマトリックスに設定されている場合、例外がスローされます。Matrix3D オブジェクトは反転可能である必要があります。反転できないマトリックスが必要な場合は、Matrix3D オブジェクトのサブクラスを作成します。



実装
    public function get rawData():Vector.<Number>
    public function set rawData(value:Vector.<Number>):void

関連項目

コンストラクタの詳細
Matrix3D()コンストラクタ
public function Matrix3D(v:Vector.<Number> = null)

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

Matrix3D オブジェクトを作成します。Matrix3D オブジェクトは数値の数が 16 のベクターで初期化できます。4 つのエレメントごとに 1 行または 1 列になります。Matrix3D オブジェクトが作成されると、rawData プロパティを使用してマトリックスエレメントにアクセスできます。

パラメータが定義されていない場合、コンストラクタは単位 Matrix3D オブジェクトを作成します。マトリックス表記では、単位マトリックスは、メインの対角線上の位置にあるすべてのエレメントには値 1 を使用し、その他のすべてのエレメントには値 0 を使用します。単位マトリックスの rawData プロパティの値は、1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1 です。 単位マトリックスの位置または平行移動の値は Vector3D(0,0,0)、回転設定は Vector3D(0,0,0)、拡大 / 縮小の値は Vector3D(1,1,1) です。

パラメータ
v:Vector.<Number> (default = null) — 数値の数が 16 のベクターです。4 つのエレメントごとに 4 × 4 マトリックスの 1 行または 1 列になります。

関連項目

メソッドの詳細
append()メソッド
public function append(lhs:Matrix3D):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

別の Matrix3D オブジェクトに現在の Matrix3D オブジェクトを乗算して、マトリックスの末尾に追加します。結果により、両方のマトリックス変換が結合されます。1 つの Matrix3D オブジェクトに複数のマトリックスを乗算できます。最後の Matrix3D オブジェクトには、すべての変換の結果が格納されます。

マトリックスの乗算は、マトリックスの加算とは異なります。マトリックスの乗算は可換ではありません。つまり、A の B 倍は B の A 倍ではありません。append() メソッドを使用すると、乗算は左側から行われます。つまり、lhs Matrix3D オブジェクトは乗算演算子の左側にあります。

thisMatrix = lhs * thisMatrix;

append() メソッドを初めて呼び出すと、親空間を基準にして変更が加えられます。後続の呼び出しは、末尾に追加された Matrix3D オブジェクトの参照フレームを基準とします。

append() メソッドは、現在のマトリックスを末尾に追加されたマトリックスに置き換えます。現在のマトリックスを変更せずに 2 つのマトリックスを末尾に追加するには、clone() メソッドを使用して現在のマトリックスをコピーした後、append() メソッドをコピーに適用します。

パラメータ

lhs:Matrix3D — 現在の Matrix3D オブジェクトを乗算した左側のマトリックスです。

関連項目

appendRotation()メソッド 
public function appendRotation(degrees:Number, axis:Vector3D, pivotPoint:Vector3D = null):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

Matrix3D オブジェクトの末尾にインクリメンタルな回転を追加します。Matrix3D オブジェクトが表示オブジェクトに適用されると、マトリックスは Matrix3D オブジェクトの他の変換の後に回転を実行します。

表示オブジェクトの回転は、軸、軸を中心とした回転の増分角度、およびオブジェクトの回転の中心となるオプションの回転軸によって定義されます。軸は通常の方向になります。一般的な軸は、XAXISVector3D(1,0,0))、YAXISVector3D(0,1,0))および ZAXISVector3D(0,0,1))です。 航空用語では、y 軸を中心とした回転は偏揺れと呼ばれます。x 軸を中心とした回転は縦揺れと呼ばれます。z 軸を中心とした回転は横揺れと呼ばれます。

変換の順序は重要です。回転に続いて平行移動変換を行うと、平行移動に続いて回転変換を行う場合とは異なる結果になります。

回転結果は絶対的ではありません。現在の位置と方向に対して相対的に行われます。変換マトリックスの絶対変更を行うには、recompose() メソッドを使用します。appendRotation() メソッドは、表示オブジェクトの軸回転プロパティ(rotationX プロパティなど)とも異なります。回転プロパティは常に平行移動の前に実行されますが、appendRotation() メソッドは既にマトリックスに存在するものを基準にして行われます。表示オブジェクトの軸回転プロパティと同様の効果を得るには、prependRotation() メソッドを使用します。このメソッドは、マトリックスでの他の変換の前に回転を実行します。

appendRotation() メソッドの変換が表示オブジェクトの Matrix3D オブジェクトに適用されると、表示オブジェクトのキャッシュされた回転プロパティ値が無効化されます。

表示オブジェクトをその位置を基準として特定のポイントを中心に回転させるには、オブジェクトの平行移動を指定されたポイントに設定し、appendRotation() メソッドを使用してオブジェクトを回転させ、オブジェクトを元の位置に戻すという方法があります。次の例では、myObject 3D 表示オブジェクトは、座標(10,10,0)を中心として y 軸を回転します。

myObject.z = 1; 
    myObject.transform.matrix3D.appendTranslation(10,10,0);
    myObject.transform.matrix3D.appendRotation(1, Vector3D.YAXIS);
    myObject.transform.matrix3D.appendTranslation(-10,-10,0);

パラメータ

degrees:Number — 回転の角度です。
 
axis:Vector3D — 回転の軸または方向です。通常の軸は、XAXISVector3D(1,0,0))、YAXISVector3D(0,1,0))および ZAXISVector3D(0,0,1))です。
 
pivotPoint:Vector3D (default = null) — オブジェクトの回転の中心を決定するポイントです。オブジェクトのデフォルトの回転軸は基準点です。

関連項目

appendScale()メソッド 
public function appendScale(xScale:Number, yScale:Number, zScale:Number):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

x 軸、y 軸、z 軸上のインクリメンタルな拡大 / 縮小の変更を Matrix3D オブジェクトの末尾に追加します。Matrix3D オブジェクトが表示オブジェクトに適用されると、マトリックスは Matrix3D オブジェクトの他の変換の後に拡大 / 縮小の変更を行います。デフォルトの拡大 / 縮小率は(1.0, 1.0, 1.0)です。

拡大 / 縮小は、3 つの軸(x,y,z)上の 3 つの増分変更のセットとして定義されます。各軸に異なる数値を乗算できます。拡大 / 縮小の変更が表示オブジェクトに適用されると、オブジェクトのサイズが増加または減少します。例えば、x、y、および z の各軸を 2 に設定するとオブジェクトのサイズが 2 倍になり、軸を 0.5 に設定するとサイズが半分になります。拡大 / 縮小の変換が特定の軸のみに影響するようにするには、他のパラメータを 1 に設定します。パラメータ 1 は、特定の軸に沿った拡大 / 縮小の変更は行われないことを意味します。

appendScale() メソッドは、サイズ変更と歪みの処理の両方に使用できます。例えば、表示オブジェクトの拡大や縮小、ある位置でのズームインやズームアウトなどです。拡大 / 縮小変換は、表示オブジェクトの回転および平行移動中に自動的に実行されます。

変換の順序は重要です。サイズ変更に続いて平行移動変換を行うと、平行移動に続いてサイズ変更変換を行う場合とは異なる結果になります。

パラメータ

xScale:Number — オブジェクトを x 軸方向に拡大 / 縮小するために使用される乗数です。
 
yScale:Number — オブジェクトを y 軸方向に拡大 / 縮小するために使用される乗数です。
 
zScale:Number — オブジェクトを z 軸方向に拡大 / 縮小するために使用される乗数です。

関連項目

appendTranslation()メソッド 
public function appendTranslation(x:Number, y:Number, z:Number):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

x 軸、y 軸、z 軸上のインクリメンタルな位置の変更を Matrix3D オブジェクトの末尾に追加します。Matrix3D オブジェクトが表示オブジェクトに適用されると、マトリックスは Matrix3D オブジェクトの他の変換の後に平行移動の変更を行います。

平行移動は、3 つの軸(x,y,z)上の 3 つの増分変更のセットとして定義されます。変換が表示オブジェクトに適用されると、表示オブジェクトは、パラメータの指定に従って、現在の位置から x、y、および z の各軸に沿って移動します。平行移動が特定の軸のみに影響するようにするには、他のパラメータを 0 に設定します。パラメータ 0 は、特定の軸に沿った変更が行われないことを意味します。

平行移動の変更は絶対的ではありません。マトリックスの現在の位置と方向に対して相対的に行われます。変換マトリックスの絶対変更を行うには、recompose() メソッドを使用します。変換の順序も重要です。平行移動に続いて回転変換を行うと、回転に続いて平行移動を行う場合とは異なる結果になります。

パラメータ

x:Number — x 軸上のインクリメンタルな位置の変更です。
 
y:Number — y 軸上のインクリメンタルな位置の変更です。
 
z:Number — z 軸上のインクリメンタルな位置の変更です。

関連項目

clone()メソッド 
public function clone():Matrix3D

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

現在の Matrix3D オブジェクトを正確にコピーした新しい Matrix3D オブジェクトを返します。

戻り値
Matrix3D — 現在の Matrix3D オブジェクトを正確にコピーした新しい Matrix3D オブジェクトです。
decompose()メソッド 
public function decompose(orientationStyle:String = "eulerAngles"):Vector.<Vector3D>

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

変換マトリックスの平行移動、回転、および拡大 / 縮小の各設定を、3 つの Vector3D オブジェクトのベクターとして返します。最初の Vector3D オブジェクトは、変換エレメントを保持します。2 番目の Vector3D オブジェクトは、回転エレメントを保持します。最初の Vector3D オブジェクトは、拡大 /縮小エレメントを保持します。

interpolateTo() メソッドなど、一部の Matrix3D メソッドは、マトリックスを自動的に分解および再構成して変換を実行します。

絶対親参照フレームを使用してマトリックスの変換を変更するには、decompose() メソッドを使用して設定を取得し、適切な変更を行います。次に、recompose() メソッドを使用して、Matrix3D オブジェクトを変更された変換に設定します。

decompose() メソッドのパラメータは、変換に使用される方向スタイルを指定します。デフォルトの方向は eulerAngles です。これは、各軸に異なる 3 つの回転角度を使用して方向を定義します。 回転は連続して行われ、それぞれの軸は変更されません。表示オブジェクトの軸回転プロパティは、Euler 角度方向スタイル変換を実行します。その他の方向スタイルオプションは、axisAnglequaternion です。 軸角度方向は、軸と角度の組み合わせを使用して方向を決定します。オブジェクトの回転の中心となる軸は、方向を表す単位ベクトルです。角度は、ベクトルに関する回転の大きさを表します。方向は表示オブジェクトの向きも決定し、角度はどちらが上かを決定します。appendRotation() メソッドと prependRotation() メソッドは、軸角度方向を使用します。四元数方向は、複素数とベクターの 4 番目のエレメントを使用します。3 つの回転軸(x,y,z)と 1 つの回転角度(w)は、方向を表します。interpolate() メソッドは四元数を使用します。

パラメータ

orientationStyle:String (default = "eulerAngles") — マトリックス変換に使用される方向スタイルを決定するオプションパラメータです。方向スタイルには、eulerAngles(定数 EULER_ANGLES)、axisAngle(定数 AXIS_ANGLE)および quaternion(定数 QUATERNION)の 3 種類があります。 様々な方向スタイルの詳細については、geom.Orientation3D クラスを参照してください。

戻り値
Vector.<Vector3D> — 3 つの Vector3D オブジェクトのベクターです。それぞれが、平行移動、回転、および拡大 / 縮小の設定を保持します。

関連項目




この例では、decompose() メソッドと recompose() メソッドを使用して、楕円を消失点の方に移動しながら水平方向に伸張します。decompose() メソッドによって返される最初の Vector3D オブジェクトは、平行移動座標を保持します。3 番目の Vector3D オブジェクトは、拡大 / 縮小設定を保持します。Vector3D オブジェクトの incrementBy() メソッドは、マトリックスの絶対平行移動および拡大 / 縮小の設定をインクリメントします。
package {
    import flash.display.MovieClip;
    import flash.display.Shape;
    import flash.geom.*;
    import flash.events.Event;
    
    public class Matrix3DdecomposeExample extends MovieClip {
        private var ellipse:Shape = new Shape();

        public function Matrix3DdecomposeExample():void {
            
            ellipse.x = (this.stage.stageWidth / 2);
            ellipse.y = (this.stage.stageHeight - 40);
            ellipse.z = 1;
            ellipse.graphics.beginFill(0xFF0000);
            ellipse.graphics.lineStyle(2);
            ellipse.graphics.drawEllipse(0, 0, 50, 40);
            ellipse.graphics.endFill();
            addChild(ellipse);

            ellipse.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
        }

        private function enterFrameHandler(e:Event):void {  

            var v3:Vector.<Vector3D> = new Vector.<Vector3D>(3);
            v3 = ellipse.transform.matrix3D.decompose();
            v3[0].incrementBy(new Vector3D(0,0,1));
            v3[2].incrementBy(new Vector3D(0.01,0,0));
            ellipse.transform.matrix3D.recompose(v3);
        }
    }
}
deltaTransformVector()メソッド 
public function deltaTransformVector(v:Vector3D):Vector3D

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

平行移動エレメントのない変換マトリックスを使用して、Vector3D オブジェクトをある空間座標から別の空間座標に変換します。返された Vector3D オブジェクトは、回転および拡大 / 縮小変換が適用された後の新しい座標を保持します。deltaTransformVector() メソッドが、平行移動変換のみを含むマトリックスに適用される場合、返される Vector3D は元の Vector3D オブジェクトと同じになります。

deltaTransformVector() メソッドを使用すると、ある座標空間の表示オブジェクトを、2 番目の表示オブジェクトの回転変換に応答させることができます。オブジェクトは回転をコピーするのではなく、位置のみを変更して、回転に変更を反映します。例えば、display.Graphics API を使用して回転する 3D 表示オブジェクトを描画するには、オブジェクトの回転座標を 2D ポイントにマッピングする必要があります。まず、deltaTransformVector() メソッドを使用して、各回転の後にオブジェクトの 3D 座標を取得します。次に、表示オブジェクトの local3DToGlobal() メソッドを適用して 3D 座標を 2D ポイントに変換します。その後に 2D ポイントを使用して、回転する 3D オブジェクトを描画できます。

パラメータ

v:Vector3D — 変換される座標を保持する Vector3D オブジェクトです。

戻り値
Vector3D — 変換された座標を持つ Vector3D オブジェクトです。

関連項目

identity()メソッド 
public function identity():void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

現在のマトリックスを単位マトリックスに変換します。単位マトリックスは、メインの対角線上にあるエレメントには値 1 を使用し、その他のすべてのエレメントには値 0 を使用します。結果は、rawData 値が 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1 のマトリックスになり、回転設定は Vector3D(0,0,0)、位置または平行移動の設定は Vector3D(0,0,0)、拡大 / 縮小は Vector3D(1,1,1) に設定されます。 単位マトリックスは次のように表現されます。

単位マトリックス

単位マトリックスの適用によって変換されたオブジェクトは、変換を実行しません。つまり、マトリックスに単位マトリックスを乗算すると、結果は元のマトリックスと同じマトリックスになります。

interpolate()メソッド 
public static function interpolate(thisMat:Matrix3D, toMat:Matrix3D, percent:Number):Matrix3D

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

表示オブジェクトがターゲットの表示オブジェクトに 1 パーセントポイント近くなるように補間することで、ある参照フレームから別の参照フレームへの補間を単純化します。その結果、新しい Matrix3D オブジェクトが作成されます。この新しい Matrix3D オブジェクトでは、平行移動、回転、および拡大 / 縮小のすべてのエレメントが、現在の表示オブジェクトとターゲットの表示オブジェクトの間の値に補間されます。

interpolate() メソッドは、表示オブジェクトの軸回転プロパティなどのメソッドを使用するときに発生する一部の不要な結果を回避します。interpolate() メソッドは、表示オブジェクトの回転プロパティのキャッシュされた値を無効化し、補間前に表示オブジェクトのマトリックスの方向エレメントを四元数に変換します。このメソッドにより、最も効率的な最短の回転パスが保証されます。また、回転はスムーズでジンバルロックは発生しません。ジンバルロックは、各軸が独立して扱われる Euler 角度を使用する場合に発生する可能性があります。2 つ以上の軸を中心として回転しているときに、軸が重なり、予期しない結果が生じる可能性があります。四元数回転により、ジンバルロックが回避されます。

interpolate() メソッドを連続して呼び出すと、表示オブジェクトは素早く変化した後、別の表示オブジェクトにゆっくり近づきます。例えば、thisMat パラメータを返された Matrix3D オブジェクトに、toMat パラメータをターゲットの表示オブジェクトの関連する Matrix3D オブジェクトに、percent パラメータを 0.1 に設定すると、表示オブジェクトはターゲットオブジェクトの方に 10 %移動します。 その後の呼び出しまたは後続のフレームで、オブジェクトは残りの 90 %の 10 %を移動した後、ターゲットに到達するまで、残りの 80 %の 10 %を移動します。

パラメータ

thisMat:Matrix3D — 補間される Matrix3D オブジェクトです。
 
toMat:Matrix3D — ターゲットの Matrix3D オブジェクトです。
 
percent:Number01 の値です。thisMat Matrix3D オブジェクトがターゲットの Matrix3D オブジェクトに向かって補間されるパーセントを決定します。

戻り値
Matrix3D — 元のマトリックスとターゲットマトリックスの間にマトリックスの値を配置するエレメントを持つ Matrix3D オブジェクトです。返されたマトリックスが this 表示オブジェクトに適用されると、オブジェクトは指定されたパーセント分ターゲットオブジェクトに近づきます。

関連項目

interpolateTo()メソッド 
public function interpolateTo(toMat:Matrix3D, percent:Number):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

表示オブジェクトのマトリックスが、ターゲットのマトリックスに 1 %近づくように補間します。表示オブジェクトの平行移動、回転、および拡大 / 縮小のすべてのエレメントが、現在の表示オブジェクトとターゲットの表示オブジェクトのマトリックスの間の値に補間されます。

interpolateTo() メソッドは、表示オブジェクトの軸回転プロパティなどのメソッドを使用するときに発生する不要な結果を回避します。interpolateTo() メソッドは、表示オブジェクトの回転プロパティのキャッシュされた値を無効化し、補間前に表示オブジェクトのマトリックスの方向エレメントを四元数に変換します。このメソッドにより、最も効率的な最短の回転パスが保証されます。また、回転はスムーズでジンバルロックは発生しません。ジンバルロックは、各軸が独立して扱われる Euler 角度を使用する場合に発生する可能性があります。2 つ以上の軸を中心として回転しているときに、軸が重なり、予期しない結果が生じる可能性があります。四元数回転により、ジンバルロックが回避されます。

interpolateTo() メソッドを連続して呼び出すと、表示オブジェクトは素早く変化した後、別の表示オブジェクトにゆっくり近づきます。例えば、percent パラメータを 0.1 に設定すると、表示オブジェクトは、toMat パラメータで指定されたターゲットオブジェクトに向かって 10 %移動します。 その後の呼び出しまたは後続のフレームで、オブジェクトは残りの 90 %の 10 %を移動した後、ターゲットに到達するまで、残りの 80 %の 10 %を移動します。

パラメータ

toMat:Matrix3D — ターゲットの Matrix3D オブジェクトです。
 
percent:Number — ターゲットを基準として表示オブジェクトの位置を決定する、01 の値です。値が 1.0 に近づくほど、表示オブジェクトは現在の位置に近くなります。 値が 0 に近づくほど、表示オブジェクトはターゲットに近くなります。

関連項目




この例では、ellipse2(3 次元表示オブジェクト)は、ellipse1(別の 3 次元表示オブジェクト)に向かって移動します。 ellipse2ellipse1 に追随して追いつこうとします。 ellipse1 が y 軸を中心として回転しない場合、ellipse2ellipse1 の上部にたどり着きます。 2 つの楕円は同じように描画されますが、別の 3 次元ワールド空間の位置に配置されます。
package {
    import flash.display.MovieClip;
    import flash.display.Shape;
    import flash.display.Graphics;
    import flash.geom.*;
    import flash.events.Event;

    public class InterpolateToExample extends MovieClip {
        private var ellipse1:Shape = new Shape();
        private var ellipse2:Shape = new Shape();

        public function InterpolateToExample():void {

            ellipse1 = myEllipses(250, 100, 500, 0xFF0000);
            addChild(ellipse1);
            
            ellipse2 = myEllipses(-30, 120, 1, 0x00FF00);
            addChild(ellipse2);

            addEventListener(Event.ENTER_FRAME, enterFrameHandler);
        }

        private function myEllipses(x:Number, y:Number, z:Number, c:Number):Shape {
            var s:Shape = new Shape();                            
            s.x = x;
            s.y = y;
            s.z = z;
            s.graphics.beginFill(c);
            s.graphics.lineStyle(2);
            s.graphics.drawEllipse(100, 50, 100, 80);
            s.graphics.endFill();
            return s;
        }

        private function enterFrameHandler(e:Event) {
            ellipse1.rotationY += 1;

            ellipse2.transform.matrix3D.interpolateTo(ellipse1.transform.matrix3D, 0.1);
        }
    }
}
invert()メソッド 
public function invert():Boolean

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

現在のマトリックスを反転します。反転されたマトリックスのサイズは元のマトリックスと同じですが、元のマトリックスの逆の変換を実行します。例えば、元のマトリックスが x 軸を中心にオブジェクトを 1 方向に回転させる場合、マトリックスの反転は、軸を中心にオブジェクトを逆方向に回転させます。反転されたマトリックスをオブジェクトに適用すると、元のマトリックスによって実行された変換が取り消されます。マトリックスに反転マトリックスを乗算すると、結果は単位マトリックスになります。

マトリックスの反転を使用して、あるマトリックスを別のマトリックスで除算できます。マトリックス A をマトリックス B で除算するには、マトリックス A にマトリックス B の反転を乗算します。反転マトリックスは、カメラ空間でも使用できます。カメラがワールド空間を移動する場合、ワールド内のオブジェクトは反対方向に移動して、ワールドビューをカメラまたはビュー空間に変換する必要があります。例えば、カメラが近づくと、オブジェクトは大きくなります。つまり、カメラがワールド z 軸を下に移動すると、オブジェクトはワールド z 軸を上に移動します。

invert() メソッドは、現在のマトリックスを反転されたマトリックスに置き換えます。現在のマトリックスを変更せずにマトリックスを反転するには、clone() メソッドを使用して現在のマトリックスをコピーした後、invert() メソッドをコピーに適用します。

Matrix3D オブジェクトは反転可能である必要があります。

戻り値
Boolean — マトリックスが正常に反転された場合、true を返します。

関連項目

pointAt()メソッド 
public function pointAt(pos:Vector3D, at:Vector3D = null, up:Vector3D = null):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

表示オブジェクトが指定された位置を向くように回転します。このメソッドにより、方向をその場で変更できます。表示オブジェクトの前方ベクトル(at Vector3D オブジェクト)は、指定されたワールドを基準とする位置を指します。表示オブジェクトの上方向は、up Vector3D オブジェクトで指定されます。

pointAt() メソッドは、表示オブジェクトのキャッシュされた回転プロパティ値を無効化します。このメソッドは表示オブジェクトのマトリックスを分解し、オブジェクトが指定された位置を向くように回転エレメントを変更します。次に、変換を実行する表示オブジェクトのマトリックスを再構成(更新)します。オブジェクトが移動するターゲット(移動するオブジェクトの位置など)を指している場合、後続の呼び出しのたびに、メソッドは移動するターゲットの方にオブジェクトを回転させます。

パラメータ

pos:Vector3D — ターゲットオブジェクトのワールドを基準とする位置です。ワールド基準により、すべてのオブジェクトが配置されるワールド空間と座標を基準とするオブジェクトの変換が定義されます。
 
at:Vector3D (default = null) — 表示オブジェクトの位置を定義する、オブジェクトを基準とするベクターです。オブジェクト基準により、オブジェクト空間、つまりオブジェクトの参照フレームと座標系を基準とするオブジェクトの変換が定義されます。デフォルト値は -z 軸(0,0,-1)です。
 
up:Vector3D (default = null) — 表示オブジェクトの「上方向」を定義するオブジェクトに相対的なベクターです。オブジェクトを見下ろして描画する場合、+z 軸は「上方向」へのベクトルになります。オブジェクト基準により、オブジェクト空間、つまりオブジェクトの参照フレームと座標系を基準とするオブジェクトの変換が定義されます。デフォルト値は -y 軸(0,-1,0)です。

関連項目




この例では、三角形は楕円の移動のパスを指して追随します。楕円と三角形は異なる場所に設定されます。その後、楕円はステージの隅に向かって上に移動します。三角形は平行移動する楕円に追随します。三角形のシェイプと pointAt() の「at」および「up」パラメータを変更すると、三角形の移動への影響を確認できます。
package {
    import flash.display.MovieClip;
    import flash.display.Shape;
    import flash.display.Graphics;
    import flash.geom.*;
    import flash.events.Event;

    public class PointAtExample extends MovieClip {
        private var ellipse:Shape = new Shape();
        private var triangle:Shape = new Shape();

        public function PointAtExample():void {
            ellipse.graphics.beginFill(0xFF0000);
            ellipse.graphics.lineStyle(2);
            ellipse.graphics.drawEllipse(30, 40, 50, 40);
            ellipse.graphics.endFill();
            ellipse.x = 100;
            ellipse.y = 150;
            ellipse.z = 1;

            triangle.graphics.beginFill(0x0000FF);
            triangle.graphics.moveTo(0, 0);
            triangle.graphics.lineTo(40, 40);
            triangle.graphics.lineTo(80, 0);
            triangle.graphics.lineTo(0, 0);
            triangle.graphics.endFill();
            triangle.x = 200;
            triangle.y = 50;
            triangle.z = 1;

            addChild(ellipse);
            addChild(triangle);

            ellipse.addEventListener(Event.ENTER_FRAME, ellipseEnterFrameHandler);
            triangle.addEventListener(Event.ENTER_FRAME, triangleEnterFrameHandler);
        }

        private function ellipseEnterFrameHandler(e:Event) {
            if(e.target.y > 0) {
                e.target.y -= 1;
                e.target.x -= 1;
            }
        }
        
        private function triangleEnterFrameHandler(e:Event) {
            e.target.transform.matrix3D.pointAt(ellipse.transform.matrix3D.position,
                                                Vector3D.XAXIS, Vector3D.YAXIS);
        }
    }
}
prepend()メソッド 
public function prepend(rhs:Matrix3D):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

現在の Matrix3D オブジェクトに別の Matrix3D オブジェクトを乗算して、マトリックスの先頭に追加します。結果により、両方のマトリックス変換が結合されます。

マトリックスの乗算は、マトリックスの加算とは異なります。マトリックスの乗算は可換ではありません。つまり、A の B 倍は B の A 倍ではありません。prepend() メソッドを使用すると、乗算は右側から行われます。つまり、rhs Matrix3D オブジェクトは乗算演算子の右側にあります。

thisMatrix = thisMatrix * rhs

prepend() メソッドによる変更は、オブジェクト空間を基準としています。つまり、常にオブジェクトの最初の参照フレームを基準とします。

prepend() メソッドは、現在のマトリックスを先頭に追加されたマトリックスに置き換えます。現在のマトリックスを変更せずに 2 つのマトリックスを先頭に追加するには、clone() メソッドを使用して現在のマトリックスをコピーした後、prepend() メソッドをコピーに適用します。

パラメータ

rhs:Matrix3D — 現在の Matrix3D が乗算されるマトリックスの右側です。

関連項目

prependRotation()メソッド 
public function prependRotation(degrees:Number, axis:Vector3D, pivotPoint:Vector3D = null):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

Matrix3D オブジェクトの先頭にインクリメンタルな回転を追加します。Matrix3D オブジェクトが表示オブジェクトに適用されると、マトリックスは Matrix3D オブジェクトの他の変換の前に回転を実行します。

表示オブジェクトの回転は、軸、軸を中心とした回転の増分角度、およびオブジェクトの回転の中心となるオプションの回転軸によって定義されます。軸は通常の方向になります。一般的な軸は、XAXISVector3D(1,0,0))、YAXISVector3D(0,1,0))および ZAXISVector3D(0,0,1))です。 航空用語では、y 軸を中心とした回転は偏揺れと呼ばれます。x 軸を中心とした回転は縦揺れと呼ばれます。z 軸を中心とした回転は横揺れと呼ばれます。

変換の順序は重要です。回転に続いて平行移動変換を行うと、平行移動に続いて回転を行う場合とは異なる結果になります。

回転結果は絶対的ではありません。結果はオブジェクト基準です。つまり、元の位置と方向の参照フレームを基準とします。変換の絶対変更を行うには、recompose() メソッドを使用します。

prependRotation() メソッドの変換が表示オブジェクトの Matrix3D オブジェクトに適用されると、表示オブジェクトのキャッシュされた回転プロパティ値が無効化されます。

表示オブジェクトをその位置を基準として特定のポイントを中心に回転させるには、オブジェクトの平行移動を指定されたポイントに設定し、prependRotation() メソッドを使用してオブジェクトを回転させ、オブジェクトを元の位置に戻すという方法があります。次の例では、myObject 3D 表示オブジェクトは、座標(10,10,0)を中心として y 軸を回転します。

myObject.z = 1; 
    myObject.transform.matrix3D.prependTranslation(10,10,0);
    myObject.transform.matrix3D.prependRotation(1, Vector3D.YAXIS);
    myObject.transform.matrix3D.prependTranslation(-10,-10,0);

パラメータ

degrees:Number — 回転の角度です。
 
axis:Vector3D — 回転の軸または方向です。通常の軸は、XAXISVector3D(1,0,0))、YAXISVector3D(0,1,0))および ZAXISVector3D(0,0,1))です。
 
pivotPoint:Vector3D (default = null) — 回転の中心を決定するポイントです。オブジェクトのデフォルトの回転軸は基準点です。

関連項目




この例では、ユーザーはマウスを移動して、楕円を x 軸と y 軸を中心として回転させることができます。楕円は、中央の基準点に合わせて描画されます。楕円は、y 軸を中心として、マウスの x 座標を使用して回転します。楕円は、x 軸を中心として、マウスの y 座標を使用して回転します。
package {
    import flash.display.MovieClip;
    import flash.display.Shape;
    import flash.geom.*;
    import flash.events.MouseEvent;
    
    public class Matrix3DprependRotationExample extends MovieClip {
        private var ellipse:Shape = new Shape();

        public function Matrix3DprependRotationExample():void {

            ellipse.graphics.beginFill(0xFF0000);
            ellipse.graphics.lineStyle(2);
            ellipse.graphics.drawEllipse(-50, -40, 100, 80);
            ellipse.graphics.endFill();

            ellipse.x = (this.stage.stageWidth / 2);
            ellipse.y = (this.stage.stageHeight / 2);
            ellipse.z = 1;
            
            addChild(ellipse);

            stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
        }

        private function mouseMoveHandler(e:MouseEvent):void {
            var y:int;
            var x:int;
            
            if(e.localX > ellipse.x) {
                y = (Math.round(e.localX) / 100);   
            } else {
                y = -(Math.round(e.localX) / 10);   
            }
            
            if(e.localY > ellipse.y) {
                x = (Math.round(e.localY) / 100);
            } else {
                x = -(Math.round(e.localY) / 100);
            }
            
            ellipse.transform.matrix3D.prependRotation(y, Vector3D.YAXIS);
            ellipse.transform.matrix3D.prependRotation(x, Vector3D.XAXIS);
        }
        
    }
}
prependScale()メソッド 
public function prependScale(xScale:Number, yScale:Number, zScale:Number):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

x 軸、y 軸、z 軸上のインクリメンタルな拡大 / 縮小の変更を Matrix3D オブジェクトの先頭に追加します。Matrix3D オブジェクトが表示オブジェクトに適用されると、マトリックスは Matrix3D オブジェクトの他の変換の前に拡大 / 縮小の変更を行います。変更はオブジェクト基準です。つまり、元の位置と方向の参照フレームを基準とします。デフォルトの拡大 / 縮小率は(1.0, 1.0, 1.0)です。

拡大 / 縮小は、3 つの軸(x,y,z)上の 3 つの増分変更のセットとして定義されます。各軸に異なる数値を乗算できます。拡大 / 縮小の変更が表示オブジェクトに適用されると、オブジェクトのサイズが増加または減少します。例えば、x、y、および z の各軸を 2 に設定するとオブジェクトのサイズが 2 倍になり、軸を 0.5 に設定するとサイズが半分になります。拡大 / 縮小の変換が特定の軸のみに影響するようにするには、他のパラメータを 1 に設定します。パラメータ 1 は、特定の軸に沿った拡大 / 縮小の変更は行われないことを意味します。

prependScale() メソッドは、サイズ変更と歪みの処理の両方に使用できます。例えば、表示オブジェクトの拡大や縮小などです。ある位置でのズームインやズームアウトにも使用できます。拡大 / 縮小変換は、表示オブジェクトの回転および平行移動中に自動的に実行されます。

変換の順序は重要です。サイズ変更に続いて平行移動変換を行うと、平行移動に続いてサイズ変更変換を行う場合とは異なる結果になります。

パラメータ

xScale:Number — オブジェクトを x 軸方向に拡大 / 縮小するために使用される乗数です。
 
yScale:Number — オブジェクトを y 軸方向に拡大 / 縮小するために使用される乗数です。
 
zScale:Number — オブジェクトを z 軸方向に拡大 / 縮小するために使用される乗数です。

関連項目

prependTranslation()メソッド 
public function prependTranslation(x:Number, y:Number, z:Number):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

x 軸、y 軸、z 軸上のインクリメンタルな位置の変更を Matrix3D オブジェクトの先頭に追加します。Matrix3D オブジェクトが表示オブジェクトに適用されると、マトリックスは Matrix3D オブジェクトの他の変換の前に平行移動の変更を行います。

平行移動は、表示オブジェクトが現在の位置から x 軸、y 軸、および z 軸に沿って移動する距離を指定します。prependTranslation() メソッドは、3 つの軸(x,y,z)上の 3 つの増分変更のセットとして平行移動を設定します。平行移動の変更が特定の軸のみに影響するようにするには、他のパラメータを 0 に設定します。パラメータ 0 は、特定の軸に沿った変更が行われないことを意味します。

平行移動の変更は絶対的ではありません。結果はオブジェクト基準です。つまり、元の位置と方向の参照フレームを基準とします。変換マトリックスの絶対変更を行うには、recompose() メソッドを使用します。変換の順序も重要です。平行移動に続いて回転変換を行うと、回転に続いて平行移動変換を行う場合とは異なる結果になります。prependTranslation() を使用すると、表示オブジェクトは他の変換に関係なく向いている方向に移動し続けます。例えば、表示オブジェクトが正の x 軸の方を向いている場合、オブジェクトがどのように回転されたかに関係なく、prependTranslation() メソッドで指定された方向に移動し続けます。平行移動の変更が他の変換の後に行われるようにするには、appendTranslation() メソッドを使用します。

パラメータ

x:Number — x 軸上のインクリメンタルな位置の変更です。
 
y:Number — y 軸上のインクリメンタルな位置の変更です。
 
z:Number — z 軸上のインクリメンタルな位置の変更です。

関連項目




この例では、ユーザーはマウスを使用して楕円をステージの y 軸の上方に向かって動かすことができます。ユーザーがマウスを楕円に合わせると、楕円は y 軸を 10 座標上に移動します。マウスを楕円から移動すると、楕円が上端まで到達していない場合、楕円は再び y 軸を 10 座標上に移動します。楕円は上端に到達すると、ステージの下部に戻ります。
package {
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.geom.*;
    import flash.events.MouseEvent;

    public class Matrix3DprependTranslationExample extends MovieClip {
        private var ellipse:Sprite = new Sprite();

        public function Matrix3DprependTranslationExample():void {
            ellipse.x = this.stage.stageWidth / 2;
            ellipse.y = this.stage.stageHeight - 100;
            ellipse.z = 1;
            ellipse.graphics.beginFill(0xFF0000);
            ellipse.graphics.lineStyle(2);
            ellipse.graphics.drawEllipse(0, 0, 60, 50);
            ellipse.graphics.endFill();
            addChild(ellipse);

            ellipse.addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
            ellipse.addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
        }

        private function mouseOverHandler(e:MouseEvent):void {
            if(ellipse.y > 0) { 
                ellipse.transform.matrix3D.prependTranslation(0, -10, 0);
            } 
        }
        
        private function mouseOutHandler(e:MouseEvent):void {
            if(ellipse.y > 0) { 
                ellipse.transform.matrix3D.prependTranslation(0, -10, 0);
            } else {
                ellipse.transform.matrix3D.prependTranslation(0, 
                                     (this.stage.stageHeight - 100), 0);
            }   
        }
    }
}
recompose()メソッド 
public function recompose(components:Vector.<Vector3D>, orientationStyle:String = "eulerAngles"):Boolean

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

変換マトリックスの平行移動、回転、および拡大 / 縮小を設定します。表示オブジェクトの回転プロパティまたは Matrix3D オブジェクトの回転メソッドによって行われる増分変化とは異なり、recompose() メソッドは絶対変化です。recompose() メソッドは、マトリックスの変換を上書きします。

絶対親参照フレームを使用してマトリックスの変換を変更するには、decompose() メソッドを使用して設定を取得し、適切な変更を行います。次に、recompose() メソッドを使用して、Matrix3D オブジェクトを変更された変換に設定します。

recompose() メソッドのパラメータは、変換に使用された方向スタイルを指定します。デフォルトの方向は eulerAngles です。これは、各軸に異なる 3 つの回転角度を使用して方向を定義します。 回転は連続して行われ、それぞれの軸は変更されません。表示オブジェクトの軸回転プロパティは、Euler 角度方向スタイル変換を実行します。その他の方向スタイルオプションは、axisAnglequaternion です。 軸角度方向は、軸と角度の組み合わせを使用して方向を決定します。オブジェクトの回転の中心となる軸は、方向を表す単位ベクトルです。角度は、ベクトルに関する回転の大きさを表します。方向は表示オブジェクトの向きも決定し、角度はどちらが上かを決定します。appendRotation() メソッドと prependRotation() メソッドは、軸角度方向を使用します。四元数方向は、複素数とベクターの 4 番目のエレメントを使用します。方向は、3 つの回転軸(x,y,z)と 1 つの回転角度(w)で表されます。interpolate() メソッドは四元数を使用します。

パラメータ

components:Vector.<Vector3D> — Matrix3D オブジェクトの平行移動、回転、および拡大 / 縮小の各要素を置き換える 3 つの Vector3D オブジェクトのベクターです。
 
orientationStyle:String (default = "eulerAngles") — マトリックス変換に使用される方向スタイルを決定するオプションパラメータです。方向スタイルには、eulerAngles(定数 EULER_ANGLES)、axisAngle(定数 AXIS_ANGLE)および quaternion(定数 QUATERNION)の 3 種類があります。 様々な方向スタイルの詳細については、geom.Orientation3D クラスを参照してください。

戻り値
Boolean — 拡大 / 縮小エレメントのいずれかが 0 の場合は、false を返します。

関連項目

transformVector()メソッド 
public function transformVector(v:Vector3D):Vector3D

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

変換マトリックスを使用して、Vector3D オブジェクトをある空間座標から別の空間座標に変換します。返された Vector3D オブジェクトは、変換後の新しい座標を保持します。平行移動を含むすべてのマトリックス変換が Vector3D オブジェクトに適用されます。

transformVector() メソッドの結果が表示オブジェクトの位置に適用されると、表示オブジェクトの位置のみが変更されます。表示オブジェクトの回転エレメントおよび拡大 / 縮小エレメントは同じ状態のままです。

パラメータ

v:Vector3D — 変換される座標を保持する Vector3D オブジェクトです。

戻り値
Vector3D — 変換された座標を持つ Vector3D オブジェクトです。

関連項目

transformVectors()メソッド 
public function transformVectors(vin:Vector.<Number>, vout:Vector.<Number>):void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

変換マトリックスを使用して、数値のベクターをある空間座標から別の空間座標に変換します。tranformVectors() メソッドは、vin Vector オブジェクトの 3 つの数値ごとに数値を 3D 座標(x,y,z)として読み取り、変換された 3D 座標を vout Vector オブジェクトに配置します。平行移動を含むすべてのマトリックス変換が vin Vector オブジェクトに適用されます。transformVectors() メソッドを使用すると、3D オブジェクトをメッシュとして描画および変換できます。メッシュとは、オブジェクトのシェイプを定義する頂点のコレクションです。

パラメータ

vin:Vector.<Number> — 数値のベクターでは、3 つの数値ごとに、変換される 3D 座標(x,y,z)を表します。
 
vout:Vector.<Number> — 数値のベクターでは、3 つの数値ごとに、変換された 3D 座標(x,y,z)を表します。

関連項目

transpose()メソッド 
public function transpose():void

言語バージョン: ActionScript 3.0
ランタイムバージョン: Flash Player 10, AIR 1.5

現在の Matrix3D オブジェクトを、行と列が入れ替わったマトリックスに変換します。例えば、現在の Matrix3D オブジェクトの rawData1,2,3,4,11,12,13,14,21,22,23,24,31,32,33,34 という 16 の数値が含まれる場合、transpose() メソッドは 4 つのエレメントごとに 1 行として読み取り、行を列に変換します。 結果は、rawData1,11,21,31,2,12,22,32,3,13,23,33,4,14,24,34 のマトリックスになります。

transpose() メソッドは、現在のマトリックスを転置されたマトリックスに置き換えます。現在のマトリックスを変更せずにマトリックスを転置するには、clone() メソッドを使用して現在のマトリックスをコピーした後、transpose() メソッドをコピーに適用します。

直交マトリックスとは、転置が反転と等しい正方マトリックスです。