ポイントが錐台の中にあるかどうかを判断する最良の方法を試しています。何か働いているが、あまりにも面倒であるかどうかは分からないし、もっとエレガントで効率的なやり方があるかもしれない。ポイントが錐台にあるかどうかを確認
私はポイントが「X」錐台の内側にあるかどうかを確認したいとします
私は錐台の8点の位置(4つの近くのポイント、4遠い点)を持っていたら、 、私は3つの点から作られた三角形に基づいて錐台の各平面の法線を計算しています。例えば、(上記の図のように)、右側のため、私は点の三から二つのベクトルを作成しています:
Vector U = FBR - NBR
Vector V = FTR - NBR
そして私は、これら2つのベクトル間の外積を行うこと巻順序を保証してい錐台の内部を指し示すように法線が正しい場合、この場合はV x U
が正しい法線を与えます。私は、各プレーンの法線をたら
Right_normal = V x U
は、私は、その後、点xは平面の点のxに一方からベクトルを引くことによって平面の又は前後にあるかどうかチェックしています:
Vector xNBR = x - NBR
は、それから私は、このベクトルと法線との間の内積を行うと、答えが肯定的であるかどうかをテストし、点xは、錐台の平面の正しい側であるかどうかを確認しています:
if (xNBR . Right_normal < 0)
{
return false;
}
else continue testing x against other planes...
xがすべての平面に対して正の場合、それは錐台の内部にあります。
これはうまくいくようですが、私が愚かなやり方でこれをやっているのかどうかは不思議です。私は昨日までの「クロスプロダクト」が何であるかを知りませんでした。だから私にとっては全く新しいものです。私は何かばかげているかもしれません。
「私は何かしている」と思ったら、コードレビューフォーラムに投稿してください。 – UKMonkey
ああ、OK!そのフォーラムについて知りませんでした。ありがとう! – kinkersnick
この回答は多分お答えできます:http://stackoverflow.com/questions/6301085/how-to-check-if-an-object-lies-outside-the-clipping-volume-in-opengl –