ぺんぎん
2009年07月05日
10:21
流れを完全に無視してるっす。
これで許してくださいっす!
どうもぺんぎんっす( ◎v◎ )
ドアのスクリプトを出す流れなんっすけど、
完全にタイミングを失ったっすね。
「これより良いんだよね?(ニヤリ)」という圧力がハンパないっす。
コネコネしてたんっすけど、水鉄砲クラスのものしかできなかったっす。
これで出撃しても爆撃機の連隊に瞬殺されるっす。
なので出撃せずに、補給部隊やるっす。
タイトルの通り、「軸」と「回転角」についてっす。
ベクトルなり姿勢を、
ある軸の周りに角度θだけ回転させる、
ドアなんかはコレっすね。
必死のフォローっす。
(vector か rotation) * <?, ?, ?, ?>
というカタチになるんっすけど、右側のrotationは何?ってことっす。
軸と回転角の2つが分かっていれば簡単っす。
軸が<X,Y,Z>、回転角θのとき、求めるrotationは
<X*sin(θ/2), Y*sin(θ/2), Z*sin(θ/2), cos(θ/2)>
となるっす。
注1:ここでの*は算数の「×」(かける)っす
注2:軸は正規化しておいてくださいっす。
こんなことしなくても、関数あるんっすけどね。
逆もOKっす。
rotationから軸と回転角を読み取るには、
strong軸:rotationのx,y,z要素を取り出して正規化
回転角:rotationのs要素のcossup-1/supを取って2倍/strong
ということなんっすけど、これも関数あるっすね。
軸:a href=http://wiki.secondlife.com/wiki/LlRot2Axis">llRot2Axis
回転角:
llRot2Angle
回転角の部分を2倍にしたり半分にしたりというのを忘れなければ、
難しいことじゃないっすね。
軸はそのままで、回転角だけを変える場合なんかは有効かもっす。
ドアなんかはそうっすよね!しつこいっすか?
llAxisAngle2Rotを使って、第2引数 angleをいじればラクっす。
回転角がそのままで、軸が変わるってのも大丈夫なんっすけど、
こういうケースってあるんっすかねぇ?