ソラマメブログ
プロフィール
ぺんぎん
ぺんぎん
どもっす( ◎v◎ )
ぺんぎんっす。

「ぺんぎんさん」でいいっす。
「ぺんさん」でもOKっすよ。
何だって良いんっすけどね。
[個体名:Naoya Bellic]
(非商用)
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 1人

2009年05月11日

ベクトルの回転っす

「電動インパクトドライバー」・・・ステキなネーミングっす。
充電式でも20,000円切ってるっすね。
むぅ・・・欲しいっす・・・
どうもぺんぎんっす( ◎v◎ )


rotation 型を使って、3次元のvectorを回転させるっす。
回転行列を書かなくてもOKなのは便利っすね。

やり方は簡単っす。
まずは回転させるvectorを演算できるようにrotationにするっす。
x,y,z成分はそのままrotationに入れて、s成分は0.0っす。
(できたrotationをAとするっす)

次に、X軸周り、Y軸周り、Z軸周りの回転を作るっす。
X軸周りの回転角 = θ
Y軸周りの回転角 = φ
Z軸周りの回転角 = ψ
とすると(全てラジアン単位っす)、
llEuler2Rot(<θ, φ, ψ>)っす。
で、ここがポイントなんっすけど、
ZERO_ROTATIONをこれで割るっす。
ZERO_ROTAION / llEuler2Rot(<θ, φ, ψ>)
っていうrotation を用意しておくっす。
(できたrotationをBとするっす)

ここまでが準備っす。
B * A / B のx,y,z成分が答えっす。



ちょっと例を出すっす。
<1.0, 0.0, 0.0>をZ軸周りに90°回転させるっす。
いわゆる「右ねじの進む向きに」っす。

上ではA,Bとしたので、そのまま使うっす。
あんまりよろしくないんっすけどね。

//-------------------------------------
// 回転させるベクトル<1.0, 0.0, 0.0>
//------------------------------------
rotation A = <1.0, 0.0, 0.0, 0.0>;

//-------------------------------------
// 「軸周りに90°回転させる」を表すrotation
//-------------------------------------
rotation B = ZERO_ROTATION / llEuler2Rot(<0.0, 0.0, PI_BY_TWO>);

rotation C = B * A / B; // Cは補助の変数っすね

vector ans = <C.x, C.y, C.z>;


ansには<0.0, 1.0, 0.0>が入ってると思うっすよ。


同じカテゴリー(スクリプト)の記事画像
位置判定っす
同じカテゴリー(スクリプト)の記事
 久しぶりの新関数っす (2011-04-23 23:19)
 11日(土)のオフィスアワーっす (2010-12-10 23:49)
 C#プロジェクトは凍結みたいっす (2010-07-01 22:35)
 4月24日のスクリプターズ・カフェっす (2010-04-27 19:06)
 潜入!1.38サーバーっす (2010-03-09 22:25)
 風の観測で分かったことっす (2009-08-16 22:11)

Posted by ぺんぎん at 21:40│Comments(0)スクリプト
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。