2D平面に点pと2つの線分があります。ポイントpは、カメラが線分に向かって見ている場所からのビューの場所です。点Pから見て、線分1が線2の後ろに部分的または完全に隠れているかどうかを確認したいと思います。
2 に答える
問題は、2行目が1行目で「マスク」されているかどうかだと思います。
カメラポイントがCで、セグメントがA1、A2とB1、B2であるとします。
外積CA1xCB1とCA2xCB2を計算します。記号は、B1ポイントがCA1ラインの左側または右側にある場合にポイントを示します。それはあなたの三角形CA1A2とCB1B2がどのように方向付けられているかに依存します(それらは同じ方向に向けられなければなりません、それらはそれをする多くの方法です)。
次に、記号を使用して、次の場合に該当するかどうかを確認できます。
- CA1xCB1が負であるか、CA2xCB2が正であるため、部分的に表示されます
- 反対に、それから隠されます。
CA1xCB2とCA2xCB1を計算して、きめ細かいケースを作成することもできます。
slurdgeの答えは良いスタートですが、それよりも少し複雑です。
線分2が線分1よりもCに近い場合でも、たとえば、線分が表示されている可能性があります。
A1-------A2
B1-B2
C
ここで、B1とB2はA1A2セクターの「内部」にありますが、隠されていません。
最も難しいのは、B1がA1とA2の間にあるがカメラに近い場合、B2がA1とA2の間にあるのではなく、カメラから離れている場合です。
B2
A1-----A2
B1
C
B1B2は線分のエッジをクリップする可能性があるため、B1B2のごく一部が非表示になります(または非表示になる可能性があります)。これが実際に発生するかどうかを確認するには、A1A2とB1B2の交差点を見つける必要があると思います。