2008年05月03日
太陽の方角
太陽の方角はSIM基準であるためか
アバターから見た太陽の方向とは異なります。
たとえばAtanで太陽の方角を出して、SIM基準では北東位置だとしても
アバターからは真東に見えます。
この補正をどうにかしようと、三角関数をいじってみましたがうまくいかずw
誰か、アバター位置から見た太陽の方角の求め方を教えてください
アバターから見た太陽の方向とは異なります。
たとえばAtanで太陽の方角を出して、SIM基準では北東位置だとしても
アバターからは真東に見えます。
この補正をどうにかしようと、三角関数をいじってみましたがうまくいかずw
誰か、アバター位置から見た太陽の方角の求め方を教えてください
この記事へのトラックバックURL
http://oshiete.slmame.com/t227295
アバターから見た太陽の方角はSIMのどこにいようと、真東→真上→真西のどこかに見えます。
llGetSunDirection()のx値とz値から方向を算出すればいいのではないでしょうか。
(というか、Y値を0.0にすれば、太陽の位置の単位ベクトルになるはず)
ただしWorld > Environment Settings > Revert to Region Default以外に設定されていてSIMの時間帯とローカル環境の時間帯が違っていれば上の方法はダメです。
単位ベクトルにはならないですね。
アバターから見た太陽の方角のベクトルが分かる・・・ということで。
atanでは正確な方位はでません
真南は当然誤差は0です。
なので、その式を解きたいのですが、私の頭では答えが出てきませんw
トシさんのいう「正確な方位」が、どのような意味なのか分かりませんが、アバターから見た見かけ上の太陽の位置は、午前中なら真東ですし午後なら真西です。正午は真上です。
(午前とか午後というのは、正確な表現ではないですが・・・。llGetSunDirectionのX値が正なら午前、負なら午後、0なら正午という意味で)
太陽の方向は、それに高さを考慮すればいいわけで、ここでいう高さというのはアバターから見た太陽の高さの角度となり、llGetSunDirectionのXとZから角度を求めればよいのではないでしょうか。
「日の出と日の入りのそれぞれの誤差は」とありますが、何の何に対しての誤差なのか分かりませんが、llGetSunDirectionで取得した太陽の位置に誤差があるのでしょうか?
llGetSunDirectionで取得した値と、アバターから見えている太陽の位置の誤差というのであれば、先に書いたようにリージョン座標系のアバター位置を基準としたXとZの平面上に太陽が見えているわけですから、誤差を考慮する必要が無いと思います。
私の「アバター位置を基準としたXとZの平面上に太陽が見えている」という認識が違っているのでしたら、ぜんぜん回答になっていないですね。
> たとえばAtanで太陽の方角を出して、SIM基準では北東位置だとしても
> アバターからは真東に見えます。
これは daytime(昼間)時に真東にある大きな太陽の事ですか?
現在の太陽は、日の出から一度真上まで一気に昇ってから
昼間の太陽が表示される様です。
ですので、真上=昼間ではない様な気がします。
トシさんは、太陽の角度は算出されているので角度をみて
昼間かどうかを判定してはいかがですか?
> もっと言うと、日の出と日の入りのそれぞれの誤差は分かっています。
llGetSunDirectionでZの値はマイナス(夜)を返してきても
まだ陽が沈んでないということですよね?
SIMのどこにいようと、デフォルトの場合は西か東しかないですよね・・?もしかしてアバターの向いている方向を北として、その時の太陽の方角を知りたいんでしょうか?(日の出の時に西を向いていたら南と表示する等)
なんにしても、もうちょっと詳しい説明をお願いします。数学は苦手ですけどw
>まだ陽が沈んでないということですよね?
具体的には日の出位置は、アバターから見ると真東ですが、 llGetSunDirectionの値から算出すると北東です。
>しかしてアバターの向いている方向を北として、その時の太陽の方角を知りたいんでしょうか?
そうですw
アバターの向きを基準として、太陽の角度を知りたいのです。
それは見かけ上の太陽ですか?
llGetSunDirectionで得られるz座標は、徐々に上がっていきます。
終わっているのでしたら…
東西南北をX,Yの二次元にしてatanで角度を算出するのでは駄目ですか?
北~南を-1~1、東から西を1~-1としてatanに渡して
返値がマイナスなら360を加算すれば2次元の角度になりませんか?
東から時計回りで南が90度、西が180度、北が270度になると思います。
後は、アバターの方角と併せて算出すれば問題ないのでは??
ただ、X,Yともに0の場合は見失う事になりますけど…。