0

私はこれを2つ持っています:

bool isPointOnShape(int a, int b)
{

}

bool isPointInShape(int a, int b)
{

}

正方形があるとします。最初の点 (左下隅) は x,y (0,0)、2 番目の点 (左上) は (0,2)、3 番目は (2,2)、4 番目は (0,2) です。 .

形状上のポイントは (0,1) (1,2) (2,1) (1,0) であり、形状上のポイントは (1,1) です。

どこかに保存できるように、形状/形状のポイントを見つけて真の値を返すにはどうすればよいですか?

4

2 に答える 2

1

非凸形状の可能性がある場合は、次のようなアルゴリズムを使用できます。

  1. から始まる光線と交差する形状エッジの数を求めます(a,b)。任意の光線を選択できますが、光線が水平または垂直の場合、交点の計算が容易になります。
  2. 交点の数が奇数の場合、ポイントは内側です。
于 2013-11-06T11:40:03.400 に答える
0

多角形テストでポイントを使用する方法を説明するopenCVのこのチュートリアルを読んでみてください。また、他のいくつかの方法をカバーしているこのwiki ページも参考になります。

openCV を使用したくない場合 - 一般に、レイ キャスティング アルゴリズムを使用できます。

  1. 指定された点(x,y)から任意の方向に線を引きます。それを呼び出しましょうL
  2. ((0,0),(0,2)), ((0,0),(2,0)), ((2,2),(0,2)), ((2,2),(2,0))テストの各行について、その行がと交差するかどうかを調べL、交差の数を数えますN
  3. Nが奇数の場合、ポイント(x,y)はポリゴン内にあります
于 2013-11-06T11:37:14.900 に答える