凸包就是一个简单的凸多边形,因此您可以轻松地尝试{this}或{this}来找到二维多边形的面积。
类似于以下内容(我们的版本):
def PolyArea2D(pts):
lines = np.hstack([pts,np.roll(pts,-1,axis=0)])
area = 0.5*abs(sum(x1*y2-x2*y1 for x1,y1,x2,y2 in lines))
return area
其中 pts 是多边形顶点的数组,即大小为 (nx2) 的数组。
完整用法:
import numpy as np
def PolyArea2D(pts):
lines = np.hstack([pts,np.roll(pts,-1,axis=0)])
area = 0.5*abs(sum(x1*y2-x2*y1 for x1,y1,x2,y2 in lines))
return area
pts = [[0,0],[1,0],[1,1],[0,1]]
print PolyArea2D(pts)
pts = [[0,0],[1,0],[0,1]]
print PolyArea2D(pts)
pts = [[0,0],[1,0],[0.5,0.5]]
print PolyArea2D(pts)
>>>
1.0
0.5
0.25
pts = [[0,0],[1,0],[1,1],[0,1]] print PolyArea2D(pts) #1.0
但是,pts = [[0,0],[1,0],[1,1],[0,1],[0.5,0.5]] print PolyArea2D(pts) #0.75
- Abhishek Reddy