Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでポリゴンの領域を見つけるプログラム


順序付けられたポイントのリストが2D平面上の単純なポリゴンエンドポイントを表すとします。このポリゴンの領域を見つける必要があります。

したがって、入力がpoints =[(0、0)、(0,5)、(3、5)、(3,0)]のような場合、出力は15になります。

Pythonでポリゴンの領域を見つけるプログラム

これを解決するには、次の手順に従います-

  • 関数getInfo()を定義します。これにはx1、y1、x2、y2が必要です
  • return x1 * y2-y1 * x2
  • メインの方法から、次の手順を実行します
  • N:=ポイントのサイズ
  • (firstx、firsty):=points [0]
  • (prevx、prevy):=(firstx、firsty)
  • res:=0
  • 1からN-1の範囲のiについては、
    • (nextx、nexty):=points [i]
    • res:=res + getInfo(prevx、prevy、nextx、nexty)
    • prevx:=nextx
    • prevy:=nexty
  • res:=res + getInfo(prevx、prevy、firstx、firsty)
  • return | res | / 2.0

理解を深めるために、次の実装を見てみましょう-

def getInfo(x1, y1, x2, y2):
   return x1*y2 - y1*x2

def solve(points):
   N = len(points)
   firstx, firsty = points[0]
   prevx, prevy = firstx, firsty
   res = 0

   for i in range(1, N):
      nextx, nexty = points[i]
      res = res + getInfo(prevx,prevy,nextx,nexty)
      prevx = nextx
      prevy = nexty
   res = res + getInfo(prevx,prevy,firstx,firsty)
   return abs(res)/2.0

points = [(0, 0), (0,5), (3, 5), (3,0)]
print(solve(points))

入力

[(0, 0), (0,5), (3, 5), (3,0)]

出力

15.0

  1. Pythonでポリゴンの周囲を見つけるプログラム

    順序付けられたポイントのリストが2D平面上の単純なポリゴンエンドポイントを表すとします。このポリゴンの周囲を見つける必要があります。 したがって、入力がpoints =[(0、0)、(0,5)、(3、5)、(3,0)]のような場合、出力は16になります。 2つの辺の長さは3で、2つの辺の長さは5なので、2 * 5 + 2 * 3=16です。 これを解決するには、次の手順に従います- 関数getInfo()を定義します。これにはx1、y1、x2、y2が必要です ユークリッド距離である((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2))の平方根を返します (x1、y1)

  2. Pythonのヒストグラムの下で最大の長方形の領域を見つけるプログラム

    ヒストグラムの棒の高さを表す数値のリストがあるとします。バーの下に形成できる最大の長方形の領域を見つける必要があります。 したがって、入力がnums =[3、2、5、7]のような場合 その場合、出力は10になります これを解決するには、次の手順に従います- stk:=スタックで、最初に-1を挿入します 高さの最後に0を挿入 ans:=0 0から高さのサイズまでの範囲のiについては、 heights [i]