2011-12-05 14 views
0

これは視線ベクトルと上方向ベクトルを計算する方法です。gluLookAtの不連続性

ly = sin(inclination); 
    lx = cos(inclination)*sin(azimuth); 
    lz = cos(inclination)*cos(azimuth); 
    uy = sin(inclination + M_PI/2.0); 
    ux = cos(inclination + M_PI/2.0)*sin(azimuth + M_PI); 
    uz = cos(inclination + M_PI/2.0)*cos(azimuth + M_PI); 

傾きは、xz平面からの視線ベクトルの角度であり、方位角は、xz平面内の角度である。

これは私の傾きが225度に達するまでうまく動作します。その時点で何らかの理由で回転に不連続性があります。 (注:225度で、それは過去の逆さまのポイントを意味します)

これはなぜそうですか?

編集:決して気にしないでください。方位角は180度を必要としない。上のベクトルの傾き。

答えて

1

私はあなたが90度(pi)の限界角度を話していると思います。あなたが得るのは正常な行動です。 gluLookAtを使用するときは、カメラのロールを決定するために使用される 'up'ベクトルを指定します。あなたが逆さまに見ている特殊なケースでは、 'up'ベクトルは視線方向ベクトルと平行であるため、カメラのロールを決定することはできません(この問題は無限の解であるため、任意のものgluLookAtによって選択されます)。あなたの傾きと方位角を使って、この「上」のベクトルを計算しなければならないかもしれません。

+0

申し訳ありませんが、(lx、ly、lz)は私の視線ベクトルで、(ux、uy、uz)は上向きベクトルです。つまり、すべての傾きに対してベクトルを再計算します。 180度の傾きを取り除くことで、アップベクトルは完璧に動作します。 – user813182

関連する問題