acm 凹多邊形面積 解析幾何 面積的計算

2021-10-18 10:59:31 字數 1657 閱讀 7280

前提提要:向量叉積以後改用 ^ 符號,過載運算子後發現表示更清晰。

friend double operator ^ (point a,point b)
1.解析幾何法:由眾多三角形的面積公式得出的結果:

(r是三角形內切圓半徑)(r是三角形外接圓半徑)

其中:2.向量叉積法:任意兩邊向量的叉積的絕對值的1/2即為三角形的面積。

code:

double ********area(v l1,v l2)
現在討論簡單多邊形,不考慮自交多邊形,計算時採用剖分思想,將其轉化為求多個三角形面積的子問題集合。

有三種轉化方法:

1.將多邊形內的一點與多邊形頂點連線,可將多邊形劃分成多個三角形,分別求出每個三角形的面積,累加起來即為多邊形的面積。

如圖,j為多邊形內一點。

2.採用三角剖分的方法,取多邊形的乙個頂點作為剖分出的三角形頂點,三角形的其他點作為多邊形上相鄰的點,

由於叉乘有正有負,所以正好可以抵消掉多餘的面積部分。面積的計算公式為:

如圖,以a點為剖分頂點。

以b點為剖分頂點。

計算得到的面積都一樣。

code:

//簡單多邊形面積,由n個點構成dots頂點集,按順序儲存。

double poly_area()

friend point operator + (const point &a,const point &b)

friend point operator - (const point &a,const point &b)

friend double operator ^ (point a,point b)

}dots[maxn];

struct v

friend v operator + (const v &a,const v &b)

friend v operator - (const v &a,const v &b)

}edge[maxn],stk[maxn];

double seare[maxn];

int n;

int parellel(const v &a,const v &b)

for(int i=1;i>a>>b;

if(a>b) swap(a,b);

if(a+1==b) continue;

res=seare[b-1]-seare[a-1];

res-=((dots[a]-dots[1])^(dots[b]-dots[1]))/2;

ans=max(ans,min(res,sum-res));

}cout<

4 20.5 0.5

10.5 0.5

10.5 10.5

0.5 10.5

1 34 2

*/

acm 凹多邊形面積 ACM 學習路線

1.學好專業課知識 理解資料庫原理 優化,計算機組成原理,概率論,線性代數,作業系統,c c 高等數學,資料結構,演算法,離散數學,網路協議,socket程式設計 編譯原理,軟體工程,設計模式,linux伺服器搭建。指令碼程式設計。stl原始碼分析,多執行緒程式設計。1.c基礎語法必須全部學完 2....

計算幾何 多邊形面積

彙總篇 計算幾何彙總 規定頂點逆時針方向的多邊形面積為正 取原點0 0,0 s a,b,c,d s o,a,b s o,b,c s o,c,d s o,d,a 圖中o在外部,obc,ocd,oda 全部是正的,加起來構成了5變形 obcda 的面積,但 oab是負面積,因此最後剛好等於 abcd 的...

多邊形面積

點積 a b x1 x2 y1 y2 a b cos 點積的結果是乙個數值 叉積 a b x1 y2 x2 y1 a b sin 叉積的結果也是乙個向量,是垂直於向量a,b所形成的平面,如果看成三維座標的話是在 z 軸上,上面結果是它的模。三角形的面積 向量a和 向量b的叉積的絕對值表示 以 向量a...