日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python计算图形面积的方法_Python计算任意多边形面积算法

發布時間:2023/12/14 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python计算图形面积的方法_Python计算任意多边形面积算法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

多邊形面積求解的方法很多,其中比較多見的就是增加一個點P,然后分別連接多邊形各個定點與P點,然后計算每個三角形的符號面積(面積有正負之分),求和就可以計算出面積。

鑒于上面的方法,我們也可以用另外一種更簡單的方法,將P點直接放在V0點,那么我們要求的面積就是V0V1V2,VoV2V3,...,V0Vn-2Vn-3的面積和。此處注意,如果我們假設逆時針的三角形(如上圖V0V2V3)為正,那么順時針的面積(如上圖V0V1V2)就為負。

代碼如下:

#------------------------------------------------------------------------------- # Name: ? ? ? ?多邊形面積計算 # Purpose: # # Author: ? ? ?Administrator # # Created: ? ? 20-02-2013 # Copyright: ? (c) Administrator 2013 # Licence: ? ? #------------------------------------------------------------------------------- import math class Point(): ? ? def __init__(self,x,y): ? ? ? ? self.x = x ? ? ? ? self.y = y def GetAreaOfPolyGon(points): ? ? '''計算多邊形面積值 ? ? ? ?points:多邊形的點集,每個點為Point類型 ? ? ? ?返回:多邊形面積''' ? ? area = 0 ? ? if(len(points)<3): ? ? ? ? raise Exception("至少需要3個點才有面積") ? ? p1 = points[0] ? ? for i in range(1,len(points)-1): ? ? ? ? p2 = points[1] ? ? ? ? p3 = points[2] ? ? ? ? #計算向量 ? ? ? ? vecp1p2 = Point(p2.x - p1.x,p2.y - p1.y) ? ? ? ? vecp2p3 = Point(p3.x - p2.x,p3.y - p2.y) ? ? ? ? #判斷順時針還是逆時針,順時針面積為正,逆時針面積為負 ? ? ? ? vecMult = vecp1p2.x*vecp2p3.y - vecp1p2.y*vecp2p3.x ? ? ? ? sign = 0 ? ? ? ? if(vecMult>0): ? ? ? ? ? ? sign = 1 ? ? ? ? elif(vecMult < 0): ? ? ? ? ? ? sign = -1 ? ? ? ? triArea = GetAreaOfTriangle(p1,p2,p3)*sign ? ? ? ? area+=triArea ? ? return abs(area) def GetAreaOfTriangle(p1,p2,p3): ? ? '''計算三角形面積''' ? ? area = 0 ? ? p1p2 = GetLineLength(p1,p2) ? ? p2p3 = GetLineLength(p2,p3) ? ? p3p1 = GetLineLength(p3,p1) ? ? s = (p1p2 + p2p3 + p3p1)/2 ? ? area = s*(s-p1p2)*(s-p2p3)*(s-p3p1) ? ? area = math.sqrt(area) ? ? return area def GetLineLength(p1,p2): ? ? '''計算邊長''' ? ? length = math.pow((p1.x-p2.x),2) + math.pow((p1.y-p2.y),2) ? ? length = math.sqrt(length) ? ? return length def main(): ? ? p1 = Point(1,1) ? ? p2 = Point(2,1) ? ? p3 = Point(2,2) ? ? p4 = Point(1,2) ? ? points = [p1,p2,p3,p4] ? ? area = GetAreaOfPolyGon(points) ? ? print(math.ceil(area)) ? ? assert math.ceil(area)==1 if __name__ == '__main__': ? ? main()

總結

以上是生活随笔為你收集整理的python计算图形面积的方法_Python计算任意多边形面积算法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。