我在編程方面追加兩個列表時遇到一些問題。我想找到是否點的名單是在邊緣或內部的多邊形鋪(他們不能躺在之外)。什麼我有是:以編程方式在python中追加列表
「pedges」是邊形成一個封閉的列表在Abaqus的多邊形
「區域」是列表「花車」
有一個內置的函數調用
getDistance
我肯定效果不錯(從Abaqus的)a)如點奠定了邊緣,然後在這個位置的區域N添加至
areas_onEdge=[]
b)若一個點上不邊緣然後在該位置的區域被添加到
areas_inside=[]
鋪設最後我計算
sum(areas_inside)/areaShell
我試圖一些直接的代碼,但它不起作用。
我做錯了什麼?
areaShell=368.97;
areas_onEdge=[]
areas_inside=[]
points=[(923.9,562.0244,0),(923.9,570.8333,0),(914.1,568.6853,0),(923.9,554.1,0),(928.8,568.6853,0),(919,579.2,0)]
areas=[787.2464,368.97,73984.02,42012.99,73984.02,44627.33]
print 'points Inter '.join(map(str,points));
print 'Areas Inter '.join(map(str,areas));
for i in range(0,len(areas)-1):
if p.getDistance(points[i],pedges[i])< 0.0001: #Distance between a point and an edge
areas_onEdge.append(areas[i])
else:
areas_inside.append(areas[i])
result=sum(areas_inside)/areaShell
EDITED
基於馬特烏斯答案:
for i in range(len(areas)):
is_on_edge = False
for j in range(len(pedges)):
if p.getDistance(points[i], pedges[i]) < 0.0001:
areas_onEdge.append(areas[i])
is_on_edge = True
if not is_on_edge:
areas_inside.append(areas[i])
有沒有可能來壓縮這樣的三份名單,以獲得比 'RATT'?
for point, area,areaR in zip(pointsInter_proj, areasInter,areasRev):
edges_distances = [p.getDistance(point, pedge) for pedge in pedges]
if min(edges_distances) >=0:
ratt.append(area/areaR);
不工作,請澄清你的問題! – Arman
你遇到的問題在哪裏?得到任何錯誤或錯誤的結果? –
最有可能的是,你的問題是,你只檢查一個邊的一個點。你需要檢查每個邊的一個點,看看該點是否在給定多邊形的任何邊上。 – Lafexlos