OpenGL2dゲームに錐台カリングを実装しようとしています。この時点での私のゲームの幾何学的オブジェクトの種類は長方形だけなので、これはかなり簡単だと思いましたが、予期しない結果が得られています。視野角が45度で、近平面と遠平面がそれぞれ0.01と50の対称透視投影を設定しました。目のベクトルは常にz軸に平行であり、カメラはx軸とy軸に沿ってのみ移動できます。
私のアイデアは、カリングしようとしている長方形のz座標で、現在カメラに表示されているワールドスペースの長方形の領域を取得することでした。カメラは錐台の中心を見ているので、この目に見える長方形の領域の端までの距離を次のように計算します。
GLfloat maxDistance = givenRectangle.z * tanf(0.5 * (fovAngle * M_PI/180) );
次に、この距離をカメラのx座標とy座標に加算および減算して、表示される最大および最小のxおよびyを取得し、指定された長方形をテストして、これらの値の間にあるかどうかを確認します。
私の質問は、私がここで正しい方向に進んでいるかどうか、そしてz = 5にオブジェクトがあるときに、上記の式が途方もなく小さい値(何か* 10 ^ -37)を返す理由です。 0,0,0)?