総数を見つけたいです。2Dデカルト平面の3つの頂点すべてのx座標とy座標が与えられた場合、三角形の内側と境界上にある点の数。三角形を長方形で囲み、直線方程式を見つけて、不等式を満たすために点を1つずつチェックすることを考えています。この問題を解決するためのより良い計算アプローチはありますか?
私を助けてください。
総数を見つけたいです。2Dデカルト平面の3つの頂点すべてのx座標とy座標が与えられた場合、三角形の内側と境界上にある点の数。三角形を長方形で囲み、直線方程式を見つけて、不等式を満たすために点を1つずつチェックすることを考えています。この問題を解決するためのより良い計算アプローチはありますか?
私を助けてください。
3 三角形エッジ ベクトルのすべての組み合わせの外積を取ります。結果として得られるベクトルの方向が、点 p へのベクトルと三角形の点 (A、B、または C) のいずれかへのベクトルの外積の結果と同じでない場合、p は三角形に含まれません。 3D になります)
より詳細な説明: http://www.blackpawn.com/texts/pointinpoly/default.html
ポイントがポリゴン内にあるかどうかをテストする一般的なケースの概要については、http: //community.topcoder.com/tc?module=Static&d1=tutorials&d2=geometry3のPointInPolygonの説明を参照してください。常に凸である三角形があるため、これは (疑似コード) に単純化されます。
for point in test_points:
//infinity can just be a point outside the bounding box of the triangle
ray := line from point to infinity
intersection_points := 0
for side in triangle_sides
isect := intersection ray, side
intersection_points++ if isect
return intersection_points %2 == 1