Python程序:计算多边形面积
假设我们有一个有序点的列表,表示二维平面上的一个简单多边形的端点。我们需要找到这个多边形的面积。
因此,如果输入类似于 points = [(0, 0), (0,5), (3, 5), (3,0)],则输出将为 15。
为了解决这个问题,我们将遵循以下步骤:
- 定义一个函数 getInfo()。它将接收 x1、y1、x2、y2 作为参数。
- 返回 x1*y2 - y1*x2
- 在主方法中,执行以下操作:
- N := points 的大小
- (firstx, firsty) := points[0]
- (prevx, prevy) := (firstx, firsty)
- res := 0
- 对于 i 从 1 到 N-1,执行以下操作:
- (nextx, nexty) := points[i]
- res := res + getInfo(prevx, prevy, nextx, nexty)
- prevx := nextx
- prevy := nexty
- res := res + getInfo(prevx, prevy, firstx, firsty)
- 返回 |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
广告