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>が入ってると思うっすよ。
充電式でも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>が入ってると思うっすよ。
Posted by ぺんぎん at 21:40│Comments(0)
│スクリプト