fc2ブログ

三次元変換行列(5)

2008/05/09 22:48 - AS3.0





public function Matrix3D() {}


/**
* 拡大縮小
* | sx  0   0   0 |
* | 0   sy  0   0 |
* | 0   0   sz  0 |
* | 0   0   0   1 |
*/
public function scale( sx:Number, sy:Number, sz:Number ):void {
 var mat:Matrix3D = new Matrix3D();
 mat.matrix[0][0] = sx;
 mat.matrix[1][1] = sy;
 mat.matrix[2][2] = sz;
 concat( mat );
}
/**
* X軸回転
* | 1  0    0     0 |
* | 0  cos  -sin  0 |
* | 0  sin  cos   0 |
* | 0  0    0     1 |
*/
public function rotateX( angle:Number ):void {
 var mat:Matrix3D = new Matrix3D();
 var cos:Number = Math.cos( angle );
 var sin:Number = Math.sin( angle );
 mat.matrix[1][1] = mat.matrix[2][2] = cos;
 mat.matrix[1][2] = -sin;
 mat.matrix[2][1] =  sin;
 concat( mat );
}
/**
* Y軸回転
* | cos   0  sin  0 |
* | 0     1  0    0 |
* | -sin  0  cos  0 |
* | 0     0  0    1 |
*/
public function rotateY( angle:Number ):void {
 var mat:Matrix3D = new Matrix3D();
 var cos:Number = Math.cos( angle );
 var sin:Number = Math.sin( angle );
 mat.matrix[0][0] = mat.matrix[2][2] = cos;
 mat.matrix[0][2] =  sin;
 mat.matrix[2][0] = -sin;
 concat( mat );
}
/**
* Z軸回転
* | cos  -sin  0  0 |
* | sin  cos   0  0 |
* | 0    0     1  0 |
* | 0    0     0  1 |
*/
public function rotateZ( angle:Number ):void {
 var mat:Matrix3D = new Matrix3D();
 var cos:Number = Math.cos( angle );
 var sin:Number = Math.sin( angle );
 mat.matrix[0][0] = mat.matrix[1][1] = cos;
 mat.matrix[0][1] = -sin;
 mat.matrix[1][0] =  sin;
 concat( mat );
}

にほんブログ村 IT技術ブログへ



スポンサーサイト




コメントの投稿

非公開コメント

タグクラウド

最近の記事
カテゴリ
月別アーカイブ
プロフィール

Aquioux

Author:Aquioux
日曜 Flash プログラマ。
Flash 作品は本館で展示しています。


mailto:aquioux@mail.goo.ne.jp

ブログパーツ

あわせて読みたい

フィードメーター - 閃光的網站・弛緩複合体 -Review Division-


検索/translation
Google



オススメ本

コメント
トラックバック
RSS

Add to Google

Bloglinesで閲読登録

はてなRSSに追加

Subscribe with livedoor Reader

My Yahoo!に追加

Add to Technorati Favorites!

feedpathに追加