首先宣告乙個概念:三角形外積:
把向量外積定義為:
|a×b|= |a|·|b|·sin<a,b>.
方向根據右手法則確定,就是手掌立在a、b所在平面的向量a上,掌心向b,那麼大拇指方向就是垂直於該平面的方向,被規定為外積
的方向。
又根據三角形的面積公式:s=0.5*|a|*|b|*sin-----> s=0.5*|a×b|
上書中給出定理:
任意多邊形的面積可由任意一點與多邊形上依次兩點連線構成的三角形向量面積求和得出。
向量面積=三角形兩邊向量的叉乘。
如下圖:
按定理,多邊形面積由p點與a-g的各頂點連線所構成的三角形向量面積構成,假定多邊形頂點座標順序為a-g,逆時針為正方向,則有如下結論:
pab,pbc,pcd均為順時針,面積為負;
pde,pef,pfg,pga均為逆時針,面積為正;
但無論正負,均可通過p點與頂點連線的向量叉乘完成,叉乘結果中已包含面積的正負。
程式實現:
#include#include#include#includeusing namespace std;
struct node
rect[10];
double det(struct node a,struct node b,struct node c)
int main()
double ans=0;
for(int i=1;i
int ans1;
ans1=(int)(0.5*fabs(ans)+0.5); //四捨五入
cout<
} return 0;
}
任意多邊形面積
給定多邊形的頂點座標 有序 讓你來求這個多邊形的面積,你會怎麼做?我們知道,任意多邊形都可以分割為n個三角形,所以,如果以這為突破點,那麼我們第一步就是把給定的多邊形,分割為數個三角形,分別求面積,最後累加就可以了,把多邊形分割為三角形的方式多種多樣,在這裡,我們按照如下圖的方法分割 s點作為起始點...
求任意多邊形的面積
輸入乙個點列,順序連線成乙個封閉多邊形,計算多邊形的面積。思路 求多邊形的面積可以使用叉乘求面積。設多邊形有n個頂點,用陣列將其存起來,其餘各點均與第乙個點連起來,這樣從逆時針方向來看,每兩個點構成乙個三角形,在使用叉乘來求的面積。有一點需要明確一下,每一次使用叉乘求面積,不能加絕對值,因為每一步叉...
求任意多邊形面積(凹多邊形和凸多邊形)
遇到問題 已知多邊形的各個左邊點,要求多邊形的面積 然後我搜尋了下看到這篇文章 這個人說的不多,但是簡單明瞭 首先已知各定點的座標分別為 x1,y1 x2,y2 x3,y3 xn,yn 則該多邊形的面積公式為 s 1 2 x1 y2 x2 y1 x2 y3 x3 y2 xk yk 1 xk 1 yk...