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

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

2009年07月05日

「軸」と「回転角」っす

流れを完全に無視してるっす。
これで許してくださいっす!
どうもぺんぎんっす( ◎v◎ )


ドアのスクリプトを出す流れなんっすけど、
完全にタイミングを失ったっすね。
「これより良いんだよね?(ニヤリ)」という圧力がハンパないっす。
コネコネしてたんっすけど、水鉄砲クラスのものしかできなかったっす。
これで出撃しても爆撃機の連隊に瞬殺されるっす。
なので出撃せずに、補給部隊やるっす。

タイトルの通り、「軸」と「回転角」についてっす。
ベクトルなり姿勢を、ある軸の周りに角度θだけ回転させる
ドアなんかはコレっすね。必死のフォローっす。

(vector か rotation) * <?, ?, ?, ?>
というカタチになるんっすけど、右側のrotationは何?ってことっす。

軸と回転角の2つが分かっていれば簡単っす。
軸が<X,Y,Z>、回転角θのとき、求めるrotationは
<X*sin(θ/2), Y*sin(θ/2), Z*sin(θ/2), cos(θ/2)>
となるっす。
注1:ここでの*は算数の「×」(かける)っす
注2:軸は正規化しておいてくださいっす。
こんなことしなくても、関数あるんっすけどね。
llAxisAngle2Rot

逆もOKっす。
rotationから軸と回転角を読み取るには、
軸:rotationのx,y,z要素を取り出して正規化
回転角:rotationのs要素のcos-1を取って2倍

ということなんっすけど、これも関数あるっすね。
軸:llRot2Axis
回転角:llRot2Angle


回転角の部分を2倍にしたり半分にしたりというのを忘れなければ、
難しいことじゃないっすね。
軸はそのままで、回転角だけを変える場合なんかは有効かもっす。
ドアなんかはそうっすよね!しつこいっすか?
llAxisAngle2Rotを使って、第2引数 angleをいじればラクっす。

回転角がそのままで、軸が変わるってのも大丈夫なんっすけど、
こういうケースってあるんっすかねぇ?


同じカテゴリー(スクリプト)の記事画像
位置判定っす
同じカテゴリー(スクリプト)の記事
 久しぶりの新関数っす (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 10:21│Comments(2)スクリプト
この記事へのコメント
>回転角がそのままで、軸が変わる
誰か作ってたルービックキューブなんかはこの書き方すればスマートなコードになりそうな気がします。
(試してない・ソースみてないんでアレですけど。
Posted by MasterPoppy AmatMasterPoppy Amat at 2009年07月06日 20:55
ルービックキューブにはイケそうっす。
回転角一定っすね。

いろいろ考えてみたんっすけど、
トルクに使えないっすかねぇ?という妄想っす。
乗り物のコントロールなんかはピッタリな気がするっす。

どこに、どう使うのがウマイのか、要研究っすね。
Posted by ぺんぎんぺんぎん at 2009年07月07日 20:30
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。