求多邊形面積小結

2021-10-01 04:22:40 字數 1893 閱讀 6710

宣告:此篇純粹是與高數公式有關,也在一定程度上將高數與程式設計聯絡了起來。

簡單的求面積公式就不多贅述了

而海**式卻是值得學習並記憶的

下面一道水題是我認識並記住海**式的第一道題,雖然是道水題,但不了解海**式會有一點點不好處理。

描述

平面上有乙個三角形,它的三個頂點座標分別為

(x1, y1), (x2, y2), (x3, y3),

那麼請問這個三角形的面積是多少。

輸入
輸入僅一行,包括6個單精度浮點數,分別對應x1, y1, x2, y2, x3, y3。
輸出
輸出也是一行,輸出三角形的面積,精確到小數點後兩位。
樣例輸入
0 0 4 0 0 3
樣例輸出
6.00
直接套公式就行

#include

#include

#include

using

namespace std;

intmain()

//海**式求面積

顯然比求三角形面積更上一層,但是同樣也是套公式即可完成

下面一題即為高數中叉乘法的典型應用

input

輸入資料報含多個測試例項,每個測試例項佔一行,每行的開始是乙個整數n(3<=n<=100),它表示多邊形的邊數(當然也是頂點數),然後是按照逆時針順序給出的n個頂點的座標(x1, y1, x2, y2… xn, yn),為了簡化問題,這裡的所有座標都用整數表示。

輸入資料中所有的整數都在32位整數範圍內,n=0表示資料的結束,不做處理。

output

對於每個測試例項,請輸出對應的多邊形面積,結果精確到小數點後一位小數。

每個例項的輸出佔一行。

sample input

3 0 0 1 0 0 1

4 1 0 0 1 -1 0 0 -1

0sample output

0.52.0

求n邊形的面積。

設 n 邊形的點,按順時針/逆時針的順序依次是

(x1,y1)(x2,y2)…(xn,yn)

那麼:s = ((x1y2-x2y1) + (x2y3-x3y2) +…+ (xny1-x1yn))/2.0;

注意最後一位是y1,x1

s為有向面積,當順時針旋轉時為負值,逆時針旋轉時為正值,題幹給出了逆時針旋轉,所以此題可不用加絕對值。但用到還是建議加個絕對值,避免出錯。

#include

#include

#include

#include

#include

using

namespace std;

intmain()

x[n+1]

=x[1];

y[n+1]

=y[1];

//最後一步

for(

int j=

1;j<=n;j++

) cout

)<<

fabs

(s/2.0

)<}return0;

}

此題顯然是提示我們用叉乘法(由題幹「逆時針」可得出),否則計算將會很困難。

另,此題若改為求正多邊形的面積還可以用乙個更簡單的公式

s=(naa)/(4.0*tan(180/n));(n為邊數,a為每邊長。)

感受:雖然高數與高階語言是兩個不同的科目,但程式設計與高數的聯絡還是顯而易見的,許多題目用上高數相關知識,會讓**更簡潔。學好高數就相當於給高階語言學習減了相當一部分負擔!

題目**

no.1

no.2

多邊形求面積,

這個程式很值得一博。昨天一位學地質的高中同學問我寫個程式求多邊形面積,因為他說看到excel就煩。正好前段時間在csdn上看到乙個帖子求多邊形面積,也想到了乙個演算法,於是寫了這個程式。演算法描述 乙個多邊形的面積可以由這樣兩個系列的梯形來計算,以凸多邊形舉例,在圖形上方的一系列邊和其在x軸的投影組...

求多邊形面積

可以利用多邊形求面積公式 s 0.5 x0 y1 x1 y0 x1 y2 x2 y1 xn y0 x0 yn 其中點 x0,y0 x1,y1 xn,yn 為多邊形上按逆時針順序的頂點。簡要證明 1.我們先簡單地從三個點入手 包括原點 面積s oab sabcd s oad s obc sabcd y...

求多邊形的面積

多邊形的面積求法 在草稿紙上面我們,我們就把它考慮成組合圖形去處理,所以我們是把他不斷的拆分,因為我們是不可以直接去求它的面積的。那麼在我們的電腦裡面,我們用 怎麼去去求面積呢?因為我們不是提前知道他們的組合圖形,所以我們不知道怎麼樣去求,或者說按照什麼圖形的面積求法,去求。當邊數為3的時候,我們知...