fc2ブログ

三次元変換行列(6)

2008/05/13 21:14 - AS3.0



座標軸回転(rotateAxis)


  1. 新規に Matrix3D オブジェクトを生成
  2. その新規行列の当該成分に対して当該値を代入
  3. 現在の行列との合成

/**
* X軸回転
* | 1  0    0     0 |
* | 0  cos  -sin  0 |
* | 0  sin  cos   0 |
* | 0  0    0     1 |
* 
* @param angle 角度(ラジアン単位)
*/
public function rotateX( angle:Number ):void {
 var mat:Matrix3D = new Matrix3D();
 var cos:Number = Math.cos( angle );
 var sin:Number = Math.sin( angle );
 mat.e = mat.i = cos;
 mat.f = -sin;
 mat.h =  sin;
 concat( mat );
}
/**
* Y軸回転
* | cos   0  sin  0 |
* | 0     1  0    0 |
* | -sin  0  cos  0 |
* | 0     0  0    1 |
* 
* @param angle 角度(ラジアン単位)
*/
public function rotateY( angle:Number ):void {
 var mat:Matrix3D = new Matrix3D();
 var cos:Number = Math.cos( angle );
 var sin:Number = Math.sin( angle );
 mat.a = mat.i = cos;
 mat.c =  sin;
 mat.g = -sin;
 concat( mat );
}
/**
* Z軸回転
* | cos  -sin  0  0 |
* | sin  cos   0  0 |
* | 0    0     1  0 |
* | 0    0     0  1 |
* 
* @param angle 角度(ラジアン単位)
*/
public function rotateZ( angle:Number ):void {
 var mat:Matrix3D = new Matrix3D();
 var cos:Number = Math.cos( angle );
 var sin:Number = Math.sin( angle );
 mat.a = mat.e = cos;
 mat.b = -sin;
 mat.d =  sin;
 concat( mat );
}

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



スポンサーサイト




コメントの投稿

非公開コメント

Z軸回転

勉強させてもらっています!

* Z軸回転
* | cos -sin 0 0 |
* | sin cos 0 0

* Z軸回転
* | cos sin 0 0 |
* | -sin cos 0 0

じゃないでしょうか?

どうでしょうか?
2008/07/15 12:14|通りすがり URL [ 編集 ]

コメントありがとうございました。
私はこのシリーズの参考書として「コンピュータゲームの数学」「CGのための線形代数」の二冊を参考書としましたが、前者ではこのエントリーで書いたとおりの値ですが、後者では三軸回転ともに sin のプラスとマイナスが逆になっています。
よってご指摘の件は、Z軸回転単体ではなく、X軸・Y軸・Z軸回転の三軸をセットで考える必要があるんじゃないかと思います。
X軸回転とY軸回転の sin のプラスマイナスもこの記事の値と逆転させたとき、Z軸回転についてご指摘の値になるのではないでしょうか。
2008/07/15 22:47|Aquioux URL [ 編集 ]

ありがとうございます。
そうですね。。ちょっと確認してみます。

カメラの移動、回転を表現するのは結局
結局、カメラ表現用の公式がある訳でなく、
それぞれのワールド座標やローカル座標を変換することでそれっぽく見せているのですかね?

3Dプログラムっておもしろいですね。
今まで適当だったことが通用しない。。。
1行1行まじめにコードを書くようになりますね。
2008/07/17 10:12|通りすがり URL [ 編集 ]
タグクラウド

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

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に追加