[Python] 複素数を使って多角形の面積を求めてみよう!!!

Python

最近、計算幾何学のプログラミングにハマってきたので

そのことに関して投稿しようと思います。

ということで今回は複素数を使って多角形の面積を求めていきたいと思います。

多角形の面積の求め方の流れ

まず多角形を三角形に分割します。

その次にその分割した三角形の面積を全て求めて足して行くという作業をします。

下図のようなイメージです。

少しイメージできたと思うので、実装してみましょう

ソースコード

def area(a,b):
return (a.real*b.imag-a.imag*b.real)/2

q=int(input())

A=[]
for _ in range(q):
  x,y=map(int,input().split())
  A.append(x+y*1j)

S=0.0
for i in range(1,q-1):
  S+=area(A[i]-A[0],A[i+1]-A[0])

print("{:.1f}".format(S))

複素数のいいところはxとyを一つの変数として見ることができるので、そこまで複雑にならずに実装できるのでおすすめです。

この機会に複素数について勉強してみるのもいいかもしれませんね。

今回は以上になります。

ではまた。

コメント

タイトルとURLをコピーしました