パッケージ | flash.geom |
クラス | public class Matrix3D |
継承 | Matrix3D Object |
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
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 クラスには、appendTranslation()
、appendRotation()
、interpolateTo()
などのメソッドがあり、これらを使用して平行移動や投影の作業を簡単に実行できます。decompose()
メソッド、recompose()
メソッドまたは rawData
プロパティを使用して、基になっているマトリックスエレメントも使用できます。
表示オブジェクトは軸回転プロパティをキャッシュして、軸ごとに個別に回転を実行し、回転の異なる組み合わせを管理します。表示オブジェクトを変換するために Matrix3D オブジェクトのメソッドが呼び出されると、オブジェクトの回転キャッシュが無効化されます。
関連する API エレメント
flash.geom.Transform
flash.geom.PerspectiveProjection
flash.geom.Vector3D
flash.geom.Orientation3D
flash.geom.Utils3D
flash.geom.Matrix
プロパティ | 定義元 | ||
---|---|---|---|
constructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクター関数への参照です。 | Object | ||
determinant : Number [読み取り専用]
マトリックスが可逆かどうかを決定する数値です。 | Matrix3D | ||
position : Vector3D
変換の参照フレーム内に、表示オブジェクトの位置、つまり 3D 座標(x,y,z)を保持する Vector3D オブジェクトです。 | Matrix3D | ||
rawData : Vector.<Number>
4 つのエレメントごとに 4 x 4 マトリックスの 1 列を示す、数値の数が 16 のベクター。 | Matrix3D |
メソッド | 定義元 | ||
---|---|---|---|
Matrix3D オブジェクトを作成します。 | Matrix3D | ||
別の Matrix3D オブジェクトに現在の Matrix3D オブジェクトを乗算して、マトリックスの末尾に追加します。 | Matrix3D | ||
Matrix3D オブジェクトの末尾にインクリメンタルな回転を追加します。 | Matrix3D | ||
x 軸、y 軸、z 軸上のインクリメンタルな拡大 / 縮小の変更を Matrix3D オブジェクトの末尾に追加します。 | Matrix3D | ||
x 軸、y 軸、z 軸上のインクリメンタルな位置の移動を Matrix3D オブジェクトの末尾に追加します。 | Matrix3D | ||
現在の Matrix3D オブジェクトを正確にコピーした新しい Matrix3D オブジェクトを返します。 | Matrix3D | ||
Vector3D オブジェクトを、呼び出し元の Matrix3D オブジェクトの特定の列にコピーします。 | Matrix3D | ||
呼び出し元の Matrix3D オブジェクトの特定の列を、Vector3D オブジェクトにコピーします。 | Matrix3D | ||
すべてのマトリックスデータを、ソース Matrix3D オブジェクトから、呼び出し元の Matrix3D オブジェクトにコピーします。 | Matrix3D | ||
すべてのベクトルデータを、ソースベクトルオブジェクトから、呼び出し元の Matrix3D オブジェクトにコピーします。 | Matrix3D | ||
すべてのマトリックスデータを、呼び出し元の Matrix3D オブジェクトから、指定されたベクトルにコピーします。 | Matrix3D | ||
Vector3D オブジェクトを、呼び出し元の Matrix3D オブジェクトの特定の行にコピーします。 | Matrix3D | ||
呼び出し元の Matrix3D オブジェクトの特定の行を、Vector3D オブジェクトにコピーします。 | Matrix3D | ||
Matrix3D | |||
変換マトリックスの平行移動、回転、および拡大 / 縮小の各設定を、3 つの Vector3D オブジェクトのベクターとして返します。 | Matrix3D | ||
平行移動エレメントのない変換マトリックスを使用して、Vector3D オブジェクトをある空間座標から別の空間座標に変換します。 | Matrix3D | ||
オブジェクトに指定されたプロパティが定義されているかどうかを示します。 | Object | ||
現在のマトリックスを単位マトリックスに変換します。 | Matrix3D | ||
[静的]
マトリックスがターゲットマトリックスになるように移動、回転、拡大・縮小変換を補間します。 | Matrix3D | ||
このマトリックスがターゲットマトリックスになるように移動、回転、拡大・縮小変換を補間します。 | Matrix3D | ||
現在のマトリックスを反転します。 | Matrix3D | ||
Object クラスのインスタンスが、パラメーターとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。 | Object | ||
表示オブジェクトが指定された位置を向くように回転します。 | Matrix3D | ||
現在の Matrix3D オブジェクトに別の Matrix3D オブジェクトを乗算して、マトリックスの先頭に追加します。 | Matrix3D | ||
Matrix3D オブジェクトの先頭にインクリメンタルな回転を追加します。 | Matrix3D | ||
x 軸、y 軸、z 軸上のインクリメンタルな拡大 / 縮小の変更を Matrix3D オブジェクトの先頭に追加します。 | Matrix3D | ||
x 軸、y 軸、z 軸上のインクリメンタルな位置の変更を Matrix3D オブジェクトの先頭に追加します。 | Matrix3D | ||
指定されたプロパティが存在し、列挙できるかどうかを示します。 | Object | ||
変換マトリックスの平行移動、回転、および拡大 / 縮小を設定します。 | Matrix3D | ||
ループ処理に対するダイナミックプロパティの可用性を設定します。 | Object | ||
ロケール固有の規則に従って書式設定された、このオブジェクトのストリング表現を返します。 | Object | ||
指定されたオブジェクトのストリング表現を返します。 | Object | ||
変換マトリックスを使用して、Vector3D オブジェクトをある空間座標から別の空間座標に変換します。 | Matrix3D | ||
変換マトリックスを使用して、数値のベクターをある空間座標から別の空間座標に変換します。 | Matrix3D | ||
現在の Matrix3D オブジェクトを、行と列が入れ替わったマトリックスに変換します。 | Matrix3D | ||
指定されたオブジェクトのプリミティブな値を返します。 | 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
関連する API エレメント
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
関連する API エレメント
rawData | プロパティ |
rawData:Vector.<Number>
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
4 つのエレメントごとに 4 x 4 マトリックスの 1 列を示す、数値の数が 16 のベクター。
rawData
プロパティが反転できないマトリックスに設定されている場合、例外がスローされます。Matrix3D オブジェクトは可逆である必要があります。反転できないマトリックスが必要な場合は、Matrix3D オブジェクトのサブクラスを作成します。
実装
public function get rawData():Vector.<Number>
public function set rawData(value:Vector.<Number>):void
関連する API エレメント
Matrix3D | () | コンストラクター |
public function Matrix3D(v:Vector.<Number> = null)
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
Matrix3D オブジェクトを作成します。Matrix3D オブジェクトは数値の数が 16 のベクターで初期化できます。4 つのエレメントごとに 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 ) — 4 つのエレメントごとに 4 x 4 マトリックスの 1 列を示す、数値の数が 16 のベクター。
|
関連する API エレメント
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 オブジェクトを乗算した左側のマトリックスです。
|
関連する API エレメント
appendRotation | () | メソッド |
public function appendRotation(degrees:Number, axis:Vector3D, pivotPoint:Vector3D = null):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
Matrix3D オブジェクトの末尾にインクリメンタルな回転を追加します。Matrix3D オブジェクトが表示オブジェクトに適用されると、マトリックスは Matrix3D オブジェクトの他の変換の後に回転を実行します。
表示オブジェクトの回転は、軸、軸を中心とした回転の増分角度、およびオブジェクトの回転の中心となるオプションの回転軸によって定義されます。軸は通常の方向になります。一般的な軸は、X_AXIS
(Vector3D(1,0,0)
)、Y_AXIS
(Vector3D(0,1,0)
)および Z_AXIS
(Vector3D(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.Y_AXIS); myObject.transform.matrix3D.appendTranslation(-10,-10,0);
パラメーター
degrees:Number — 回転の角度です。
| |
axis:Vector3D — 回転の軸または方向です。通常の軸は、X_AXIS (Vector3D(1,0,0) )、Y_AXIS (Vector3D(0,1,0) )および Z_AXIS (Vector3D(0,0,1) )です。このベクトルの長さは 1 になります。
| |
pivotPoint:Vector3D (default = null ) — オブジェクトの回転の中心を決定するポイントです。オブジェクトのデフォルトの回転軸は基準点です。
|
関連する API エレメント
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 軸方向に拡大 / 縮小するために使用される乗数です。
|
関連する API エレメント
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 軸上のインクリメンタルな位置の変更です。
|
関連する API エレメント
clone | () | メソッド |
copyColumnFrom | () | メソッド |
copyColumnTo | () | メソッド |
copyFrom | () | メソッド |
copyRawDataFrom | () | メソッド |
public function copyRawDataFrom(vector:Vector.<Number>, index:uint = 0, transpose:Boolean = false):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 11, AIR 3.0, Flash Lite 4 |
すべてのベクトルデータを、ソースベクトルオブジェクトから、呼び出し元の Matrix3D オブジェクトにコピーします。オプションの index パラメーターを使用すると、ベクトル内の開始スロットを選択できます。
パラメーター
vector:Vector.<Number> — データのコピー元となるベクトルオブジェクトです。
| |
index:uint (default = 0 )
| |
transpose:Boolean (default = false )
|
copyRawDataTo | () | メソッド |
public function copyRawDataTo(vector:Vector.<Number>, index:uint = 0, transpose:Boolean = false):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 11, AIR 3.0, Flash Lite 4 |
すべてのマトリックスデータを、呼び出し元の Matrix3D オブジェクトから、指定されたベクトルにコピーします。オプションの index パラメーターを使用すると、ベクトル内のターゲットの開始スロットを選択できます。
パラメーター
vector:Vector.<Number> — データのコピー先となるベクトルオブジェクトです。
| |
index:uint (default = 0 )
| |
transpose:Boolean (default = false )
|
copyRowFrom | () | メソッド |
copyRowTo | () | メソッド |
copyToMatrix3D | () | メソッド |
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 角度方向スタイル変換を実行します。その他の方向スタイルオプションは、axisAngle
と quaternion
です。軸角度方向は、軸と角度の組み合わせを使用して方向を決定します。オブジェクトの回転の中心となる軸は、方向を表す単位ベクトルです。角度は、ベクトルに関する回転の大きさを表します。方向は表示オブジェクトの向きも決定し、角度はどちらが上かを決定します。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 オブジェクトのベクターです。それぞれが、平行移動、回転、および拡大 / 縮小の設定を保持します。
|
関連する API エレメント
例 ( この例の使用方法 )
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 オブジェクトを描画できます。
注意:このメソッドにより、渡された Vector3D の w 要素が自動的に 0.0 に設定されます。
パラメーター
v:Vector3D — 変換される座標を保持する Vector3D オブジェクトです。
|
Vector3D — 変換された座標を持つ Vector3D オブジェクトです。
|
関連する API エレメント
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 |
マトリックスがターゲットマトリックスになるように移動、回転、拡大・縮小変換を補間します。
interpolate()
メソッドは、表示オブジェクトの軸回転プロパティなどのメソッドを使用するときに発生する一部の不要な結果を回避します。interpolate()
メソッドは、表示オブジェクトの回転プロパティのキャッシュされた値を無効化し、補間前に表示オブジェクトのマトリックスの方向エレメントを四元数に変換します。このメソッドにより、最も効率的な最短の回転パスが保証されます。また、回転はスムーズでジンバルロックは発生しません。ジンバルロックは、各軸が独立して扱われる Euler 角度を使用する場合に発生する可能性があります。2 つ以上の軸を中心として回転しているときに、軸が重なり、予期しない結果が生じる可能性があります。四元数回転により、ジンバルロックが回避されます。
interpolate()
メソッドを連続して呼び出すと、表示オブジェクトは素早く変化した後、別の表示オブジェクトにゆっくり近づきます。例えば、thisMat
パラメーターを返された Matrix3D オブジェクトに、toMat
パラメーターをターゲットの表示オブジェクトの関連する Matrix3D オブジェクトに、percent
パラメーターを 0.1
に設定すると、表示オブジェクトはターゲットオブジェクトの方に 10 %移動します。その後の呼び出しまたは後続のフレームで、オブジェクトは残りの 90 %の 10 %を移動した後、ターゲットに到達するまで、残りの距離の 10 %を移動します。
パラメーター
thisMat:Matrix3D — 補間される Matrix3D オブジェクトです。
| |
toMat:Matrix3D — ターゲットの Matrix3D オブジェクトです。
| |
percent:Number — 0 ~ 1 の値です。thisMat Matrix3D オブジェクトがターゲットの Matrix3D オブジェクトに向かって補間されるパーセントを決定します。
|
Matrix3D — 元のマトリックスとターゲットマトリックスの間にマトリックスの値を配置するエレメントを持つ Matrix3D オブジェクトです。返されたマトリックスが this 表示オブジェクトに適用されると、オブジェクトは指定されたパーセント分ターゲットオブジェクトに近づきます。
|
関連する API エレメント
interpolateTo | () | メソッド |
public function interpolateTo(toMat:Matrix3D, percent:Number):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
このマトリックスがターゲットマトリックスになるように移動、回転、拡大・縮小変換を補間します。
interpolateTo()
メソッドは、表示オブジェクトの軸回転プロパティなどのメソッドを使用するときに発生する不要な結果を回避します。interpolateTo()
メソッドは、表示オブジェクトの回転プロパティのキャッシュされた値を無効化し、補間前に表示オブジェクトのマトリックスの方向エレメントを四元数に変換します。このメソッドにより、最も効率的な最短の回転パスが保証されます。また、回転はスムーズでジンバルロックは発生しません。ジンバルロックは、各軸が独立して扱われる Euler 角度を使用する場合に発生する可能性があります。2 つ以上の軸を中心として回転しているときに、軸が重なり、予期しない結果が生じる可能性があります。四元数回転により、ジンバルロックが回避されます。
注意:補間の場合、マトリックスのスケーリング値がリセットされ、マトリックスは正規化されます。
interpolateTo()
メソッドを連続して呼び出すと、表示オブジェクトは素早く変化した後、別の表示オブジェクトにゆっくり近づきます。例えば、percent パラメーターを 0.1
に設定すると、表示オブジェクトは、toMat
パラメーターで指定されたターゲットオブジェクトに向かって 10 %移動します。その後の呼び出しまたは後続のフレームで、オブジェクトは残りの 90 %の 10 %を移動した後、ターゲットに到達するまで、残りの距離の 10 %を移動します。
パラメーター
toMat:Matrix3D — ターゲットの Matrix3D オブジェクトです。
| |
percent:Number — ターゲットを基準として表示オブジェクトの位置を決定する、0 ~ 1 の値です。値が 1.0 に近づくほど、表示オブジェクトは現在の位置に近くなります。値が 0 に近づくほど、表示オブジェクトはターゲットに近くなります。
|
関連する API エレメント
例 ( この例の使用方法 )
ellipse2
(3 次元表示オブジェクト)は、ellipse1
(別の 3 次元表示オブジェクト)に向かって移動します。ellipse2
は ellipse1
に追随して追いつこうとします。 ellipse1
が y 軸を中心として回転しない場合、ellipse2
は ellipse1
の上部にたどり着きます。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 を返します。
|
関連する API エレメント
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()
メソッドは、表示オブジェクトのキャッシュされた回転プロパティ値を無効化します。このメソッドは表示オブジェクトのマトリックスを分解し、オブジェクトが指定された位置を向くように回転エレメントを変更します。次に、変換を実行する表示オブジェクトのマトリックスを再構成(更新)します。オブジェクトが移動するターゲット(移動するオブジェクトの位置など)を指している場合、後続の呼び出しのたびに、メソッドは移動するターゲットの方にオブジェクトを回転させます。
注意: オプションのパラメーターを設定せずに Matrix3D.pointAt()
メソッドを使用する場合、デフォルトで、ターゲットオブジェクトはワールドを基準とする指定された位置に面していません。at
の値を -y 軸 (0,-1,0) に、up
の値を -z 軸 (0,0,-1) に設定する必要があります。
パラメーター
pos:Vector3D — ターゲットオブジェクトのワールドを基準とする位置です。ワールド基準により、すべてのオブジェクトが配置されるワールド空間と座標を基準とするオブジェクトの変換が定義されます。
| |
at:Vector3D (default = null ) — 表示オブジェクトの位置を定義する、オブジェクトを基準とするベクターです。オブジェクト基準により、オブジェクト空間、つまりオブジェクトの参照フレームと座標系を基準とするオブジェクトの変換が定義されます。デフォルト値は +y 軸(0,1,0,-)です。
| |
up:Vector3D (default = null ) — 表示オブジェクトの「上方向」を定義する、オブジェクトを基準とするベクターです。オブジェクトを見下ろして描画する場合、+z 軸は「上方向」へのベクトルになります。オブジェクト基準により、オブジェクト空間、つまりオブジェクトの参照フレームと座標系を基準とするオブジェクトの変換が定義されます。デフォルト値は +z 軸(0,0,1,-)です。
|
関連する API エレメント
例 ( この例の使用方法 )
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.X_AXIS, Vector3D.Y_AXIS); } } }
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 が乗算されるマトリックスの右側です。
|
関連する API エレメント
prependRotation | () | メソッド |
public function prependRotation(degrees:Number, axis:Vector3D, pivotPoint:Vector3D = null):void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
Matrix3D オブジェクトの先頭にインクリメンタルな回転を追加します。Matrix3D オブジェクトが表示オブジェクトに適用されると、マトリックスは Matrix3D オブジェクトの他の変換の前に回転を実行します。
表示オブジェクトの回転は、軸、軸を中心とした回転の増分角度、およびオブジェクトの回転の中心となるオプションの回転軸によって定義されます。軸は通常の方向になります。一般的な軸は、X_AXIS
(Vector3D(1,0,0)
)、Y_AXIS
(Vector3D(0,1,0)
)および Z_AXIS
(Vector3D(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.Y_AXIS); myObject.transform.matrix3D.prependTranslation(-10,-10,0);
パラメーター
degrees:Number — 回転の角度です。
| |
axis:Vector3D — 回転の軸または方向です。通常の軸は、X_AXIS (Vector3D(1,0,0) )、Y_AXIS (Vector3D(0,1,0) )および Z_AXIS (Vector3D(0,0,1) )です。このベクトルの長さは 1 になります。
| |
pivotPoint:Vector3D (default = null ) — 回転の中心を決定するポイントです。オブジェクトのデフォルトの回転軸は基準点です。
|
関連する API エレメント
例 ( この例の使用方法 )
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.Y_AXIS); ellipse.transform.matrix3D.prependRotation(x, Vector3D.X_AXIS); } } }
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 軸方向に拡大 / 縮小するために使用される乗数です。
|
関連する API エレメント
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 軸上のインクリメンタルな位置の変更です。
|
関連する API エレメント
例 ( この例の使用方法 )
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 角度方向スタイル変換を実行します。その他の方向スタイルオプションは、axisAngle
と quaternion
です。軸角度方向は、軸と角度の組み合わせを使用して方向を決定します。オブジェクトの回転の中心となる軸は、方向を表す単位ベクトルです。角度は、ベクトルに関する回転の大きさを表します。方向は表示オブジェクトの向きも決定し、角度はどちらが上かを決定します。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 — components ベクターの Vector3D エレメントがどれも存在していないか null の場合は、false を返します。
|
関連する API エレメント
transformVector | () | メソッド |
public function transformVector(v:Vector3D):Vector3D
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
変換マトリックスを使用して、Vector3D オブジェクトをある空間座標から別の空間座標に変換します。返された Vector3D オブジェクトは、変換後の新しい座標を保持します。平行移動を含むすべてのマトリックス変換が Vector3D オブジェクトに適用されます。
transformVector()
メソッドの結果が表示オブジェクトの位置に適用されると、表示オブジェクトの位置のみが変更されます。表示オブジェクトの回転エレメントおよび拡大 / 縮小エレメントは同じ状態のままです。
注意:このメソッドにより、渡された Vector3D の w 要素が自動的に 1.0 に設定されます。
パラメーター
v:Vector3D — 変換される座標を保持する Vector3D オブジェクトです。
|
Vector3D — 変換された座標を持つ Vector3D オブジェクトです。
|
関連する API エレメント
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)を表します。
|
関連する API エレメント
transpose | () | メソッド |
public function transpose():void
言語バージョン: | ActionScript 3.0 |
ランタイムバージョン: | Flash Player 10, AIR 1.5 |
現在の Matrix3D オブジェクトを、行と列が入れ替わったマトリックスに変換します。例えば、現在の Matrix3D オブジェクトの rawData
に 1,2,3,4,11,12,13,14,21,22,23,24,31,32,33,34
という 16 の数値が含まれる場合、transpose()
メソッドは 4 つのエレメントごとに 1 行として読み取り、行を列に変換します。結果は、rawData
が 1,11,21,31,2,12,22,32,3,13,23,33,4,14,24,34
のマトリックスになります。
transpose()
メソッドは、現在のマトリックスを転置されたマトリックスに置き換えます。現在のマトリックスを変更せずにマトリックスを転置するには、clone()
メソッドを使用して現在のマトリックスをコピーした後、transpose()
メソッドをコピーに適用します。
直交マトリックスとは、転置が反転と等しい正方マトリックスです。
Tue Jun 12 2018, 10:34 AM Z