0

これは、視線ベクトルとアップベクトルを計算する方法です。

    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度を必要としません。上向きのベクトルを傾けます。

4

1 に答える 1

1

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

于 2011-12-05T07:18:01.667 に答える