四角形を作成する 4 つの点があります。5 番目の点がそれらの間のどこかにあるかどうかを知りたいです。これらの画像のようなもの:
5 番目のポイントがどこにあるかは関係ありません。5 番目のポイントが他の 4 つのポイントが作成する領域内にあるかどうかを知る必要があります。
また、4点は移動可能です。それ、どうやったら出来るの?
GraphicsPathクラスを使用できます。
Point p1 = new Point(1,0);
Point p2 = new Point(10, 3);
Point p3 = new Point(9, 13);
Point p4 = new Point(3,2);
Point p = new Point(5,5);
GraphicsPath g = new GraphicsPath();
g.AddPolygon(new Point[] { p1, p2, p3, p4 });
var result = g.IsVisible(p);
これらの点の座標がある場合は、四辺形を作成している点の線形方程式を取得してみてください。三角形の点で説明します。外に3つのポイントがあるとしましょう:
A(-1,-1)
B(0,2)
C(1,1)
と中の1つ:
D(0,0)
あなたは外側の点のための一次方程式を見つけることができます:
AB -> y = 3x + 2
BC -> y = -x + 2
CA -> y = x
次に、x = 0のyを計算し(点Dはx = 0であるため)、DがABの下、BCの下にあるが、CA内にあることがわかります(CAの上にある場合は三角形ABCの内側になります)。