0

プログラムで 2 つのリストを追加する際に問題が発生しています。ポイントのリストがエッジ上にあるか、ポリゴンの内側にあるかを調べたい(外側には配置できません)。私が持っているものは次のとおりです:

  1. 「pedges」は、Abaqus で閉じた多角形を形成するエッジのリストです。

  2. 'areas' は 'floats' のリストです

  3. getDistanceうまく機能すると確信している組み込み関数があります (Abaqus から)

    a) 点がエッジ上にある場合、この位置の領域が追加されますareas_onEdge=[]

    b) 点がエッジ上にない場合、この位置の領域が追加されますareas_inside=[]

  4. 最後に計算します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

編集済み

マテウスの回答に基づく:

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])

このような 3 つのリストを zip して比率「ラット」を取得することは可能でしょうか?

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);
4

1 に答える 1