1

Google やフォーラムで答えが見つからなかった質問があり、ここで助けを求めることにしました。

私はかなりベテランのプログラマーで、さまざまなプラットフォームで多くの成功を収めてきましたが、今まで多くの数学を使用したり必要としたりしませんでした。

ここで、5 つのポイント (4 辺のピラミッド) と単一のベクトルの配列を受け取る関数を構築する方法を知る必要があります。問題は、この 3 次元ベクトルがピラミッドの内側にあるかどうかです。

関数は最終的に (Mono) C# で記述されますが、他の言語のヒントやコードがある場合、または単純な数学を手伝うことができれば、それもまったく問題ありません。

4

1 に答える 1

5

ベクトルは何の内部にも存在しません。3D ベクトルではなく、3D ポイントがあることを意味していたと思います。

その場合、単純な解決策 (任意の凸多面体で機能します) は、ピラミッドの各面を考慮するときに、ポイントが正しい半空間上にあるかどうかを確認することです。

具体的には、ピラミッドの最初の面 (2 つのエッジなど) で 2 つのベクトルを取り、この面上の 1 つの点 (頂点の 1 つなど) とテストする点で 3 番目のベクトルを形成します。混合積の符号を使用して (つまり、ピラミッド面に直交するベクトルになる 2 つのエッジの外積を取り、この法線が 3 番目のベクトルと同じ方向にあるかどうかを内積で確認します)、ポイントがどちら側にあるかを判断できます。

すべての面について手順を繰り返すと、結論が得られます。

于 2013-03-03T00:39:38.543 に答える