2 つのポリゴン p1 と p2 があるとします。ここで、p2 は完全に p1 の内側にあります。
p1 = [(0, 10), (10, 10), (10, 0), (0, 0)]
p2 = [(2, 6), (6, 6), (6, 2), (2, 2)]
degree_of_contact = 0
xyarrays = [p1,p2]
p1_degree_of_contact = 0
for x,y in xyarrays[0]:
if point_inside_polygon(x,y,xyarrays[1]):
p1_degree_of_contact += 1
p2_degree_of_contact = 0
for x,y in xyarrays[1]:
if point_inside_polygon(x,y,xyarrays[0]):
p2_degree_of_contact += 1
degree_of_contact = p1_degree_of_contact + p2_degree_of_contact
ここで、point_inside_polygonは、ポイントがポリゴンの内側にあるかどうか (True、そうでない場合は False) を決定します。poly は、ポリゴンの頂点の座標を含むペア (x,y) のリストです。このアルゴリズムは「レイキャスティング法」と呼ばれています。
両方のループを 1 つのエレガントな方法 (ライン コーディングで保存) に結合したいと考えています。