1

カメラクォータニオン(a、b、c、d)とカム位置(camX、camY、camZ)があります。3D座標(x、y、z)のオブジェクトがあります。

カムビューの方向と平面に対するオブジェクトの方位角、高度を計算する必要があります。

最初の質問オブジェクトをビューの中央に配置した場合、カムを回転させて平行移動すると、同じ方位角値になるはずですよね?? 私はそれを持っていません。

2番目の質問、計算。オブジェクトをカムに変換するために、オブジェクトの座標(カムの位置)を実行しています。結果の座標を取得し、クォータニオンとその共役を使用してサンドイッチ製品を作成します。(疑似コードについてはこれに従いました:http://fr.wikipedia.org/wiki/Quaternions_et_rotation_dans_l'espace

次に、ベクトルの結果があり、X&Zコンポーネントを取得して、atan2を計算します。

それは正しいように見えますか?

どんなリードや説明も私の闘いで私を大いに助けてくれるでしょう

4

1 に答える 1

2

あなたが説明した2番目の計算はかなり正しいように見えますが、検証する必要のあるいくつかの基本的な仮定があります。それらについては後で説明します。ただし、最初の質問は意味がありません。

回転と平行移動の両方で、ほとんどの場合、方位角の値が変更されます。オブジェクトをまっすぐ見ている場合は、azimuth==0。次に左に90°回転すると、方位角も明らかに90°変化します。次に(長さの)一歩x前進すると、方位角はちょうど追加のatan(x/d)角度になります(ここdで、はオブジェクトがあなたの前にあった元の距離です)。

方位角と仰角を見つけることに関しては、あなたの計算は世界のデフォルトの向きについての仮定に依存します。つまり、カメラの座標が[0,0,0]の場合、クォータニオンはID回転です。カメラはどの方向を向いており、どの方向が上を向いていますか?通常、「up」はで、+yforwardは-zです。その場合は、次のように計算します。

p = q'*(obj-cam)*q
az = atan2(p.x,-p.z)
el = asin(p.y/sqrt(p.x*p.x + p.y*p.y + p.z*p.z))

ここq'で、はクォータニオン共役/逆(ちょうど否定q.w)であり、*クォータニオン乗算(wベクトルの成分はゼロに設定されます)です。

于 2012-07-06T15:05:21.800 に答える