2008年09月09日
姿勢を調べる方法
物理オブジェクトを投げて、落ちて止まった時の姿勢が、「ほぼ表向き、ほぼ裏向き、その中間」で分岐処理するようなスクリプトを作ろうとして、その姿勢の取得方法でなやんでいます。
llRot2UpでZ軸の方向をベクトルデータで取得できるので、そのベクトル成分をx、y、zとすると
Atan(root(x^2+y^2)/z)で出た角度が例えば30度以下なら上向き、150度以上なら下向き・・・・
という感じにできるのかな、と思っているんですが、LSLでルートって使えませんよね?
それに、そもそも、もっと簡単にできる方法があるような気がしてなりません。ご存知のかた、ご教示いただけませんか。
最初は、llAngleBetween(ZERO_ROTATION,llGetRot())でいいのかと思いましたが、だめでした。
よろしくお願いいたします。
llRot2UpでZ軸の方向をベクトルデータで取得できるので、そのベクトル成分をx、y、zとすると
Atan(root(x^2+y^2)/z)で出た角度が例えば30度以下なら上向き、150度以上なら下向き・・・・
という感じにできるのかな、と思っているんですが、LSLでルートって使えませんよね?
それに、そもそも、もっと簡単にできる方法があるような気がしてなりません。ご存知のかた、ご教示いただけませんか。
最初は、llAngleBetween(ZERO_ROTATION,llGetRot())でいいのかと思いましたが、だめでした。
よろしくお願いいたします。
テクスチェンジのHUDについて
モール用のプリムカウンターを探しています
連続するアニメーションの処理
オブジェクトの上にフローティングテキストを出す。
チャットログの盗聴について
椅子に座った後で位置調整できるスクリプト
モール用のプリムカウンターを探しています
連続するアニメーションの処理
オブジェクトの上にフローティングテキストを出す。
チャットログの盗聴について
椅子に座った後で位置調整できるスクリプト
http://wiki.secondlife.com/wiki/LlSqrt/ja
ですか?
こういうことかな?
llAtan2(llSqrt(x*x+y*y),z);
llRot2Up() で取得したベクトルは必ず単位ベクトルなので大きさは 1 ですから、本文に書かれているものと同じ箇所の角度を計算するのであれば llAcos() を使った方が式が簡単になります。
vector up = llRot2Up( llGetRot() );
float deg = llAcos( up.z ) * RAD_TO_DEG;
lllAngleBetween() は、どれか1軸だけの回転に限定されていれば使えると思います。
ルートの関数あったんですね。調査不足で質問してごめんなさい。
ありがとうございました。
Hidenoriさん
Z軸成分のアークコサインでいいんですね。
これで試してみます。
ありがとうございました。