2Dで次の幾何学的問題があります。
方向と角度によって与えられる無限の角度(2Dコーン)をキャストするポイントがあります。(点と方向はベクトルを形成し、角度の各側の半分は2D円錐を形成します)
次に、2Dの別のポイントがこの円錐の内側にあるか外側にあるかを確認したいと思います。
これはどのように達成できますか?ありがとう!
円錐の中心からクエリポイントまでのベクトルを計算します。ベクトルを長さ1に正規化し、円錐の中心ベクトルを取り、これも長さ1に正規化します。
次に、ベクトル間の内積を取ります。2つの正規化されたベクトル間の内積は、それらの間の角度の余弦です。acos
ドット積のアークコサイン(ほとんどの言語で)を取得すると、角度がわかります。この角度を円錐の角度(説明では半分の角度)と比較します。低い場合、問題のポイントはコーンの内側にあります。
これは2Dおよび3Dで機能します。
方向のアークタンジェントを使用して方向の角度を計算します。チェックした点から原点を引きます。その角度を計算し(ここでも正規化されたベクトルのarctgを介して)、角度の境界内にあるかどうかを確認します。
最良の方法は、円錐の方向に垂直な2Dサーフェスにポイントを投影することです。次に、同じ平面と点の間の直交距離を計算します。最後に、その高さでの円錐の幅がわかっているので、ポイントがその幅の外側にあるかどうかを確認できます。
原点から指定された点までのベクトルが、中心を通る法線と角度Aをなすようにします。角度Aが円錐の半分の角度よりも小さい場合、それは内側または外側にあります。