版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、ACM ACM 程序設計程序設計計算機學院計算機學院 劉春英劉春英調課一周06057229許璟亮許璟亮計算幾何初步計算幾何初步(Computational Geometry Basic)線 段 屬 性1、傳統的計算線段相交的方法是什么?2、傳統方法和本方法的區(qū)別是什么?l以上引見的線段的三個屬性,是計算幾何的根底,在很多方面都有運用,比如求凸包等等,請務必掌握!多邊形面積 和重心l給定一個簡單多邊形,求其面積。l輸入:多邊形頂點按逆時針順序陳列l(wèi)輸出:面積Sl在解析幾何里, ABC的面積可以經過如下方法求得:l點坐標 = 邊長 = 海倫公式 = 面積計算量大精度損失更好的方法?l在計算幾何里,
2、我們知道,ABC的面積就是“向量AB和“向量AC兩個向量叉積的絕對值的一半。其正負表示三角形頂點是在右手系還是左手系。ABC成左手系,負面積ABC成右手系,正面積BCACBAlArea(A,B,C)= 1/2 * (AB) (AC)l = /2l特別留意:l 以上得到是有向面積有正負! Xb X a Yb Y aXc X a Yc Y al很自然地,我們會想到以 P1為扇面中心,銜接P1Pi就得到N-2個三角形,由于凸性,保證這些三角形全在多邊形內,那么,這個凸多邊形的有向面積:l A=sigma(Ai) (i=1N-2)P1P2P3P4P5P6A1A2A3A4P1P4P3P2多邊形面積公式:
3、A=sigma(Ai) (i=1N-2)結論: “有向面積A比“面積S其實更本質!l我們能把多邊形分成N-2個三角形,為什么不能分成N個三角形呢?l比如,以多邊形內部的一個點為扇心,就可以把多邊形剖分成 N個三角形。P0P1P2P6P5P4P3我們可以得到:A=sigma(Ai) i=1N 即:A= sigma /2 i=1N Xi X0 Yi Y0X(i+1) X0 Y(i+1) Y0P0P1P2P3P4OP1P2P3P4如今的公式?A=sigma /2 i=1N Xi YiX(i+1) Y(i+1)面積問題面積問題搞定!搞定!l給定一個簡單多邊形,求其重心。l輸入:多邊形頂點按逆時針順序陳
4、列l(wèi)輸出:重心點C三角形的重心是: (x1+x2+x3) / 3,(y1+y2+y3) / 3可以推行否?Sigma(xi)/N , sigma(yi)/N (i=1N) ?.l錯誤的推行公式是“質點系重心公式,即假設以為多邊形的質量僅分布在其頂點上,且均勻分布,那么這個公式是對的。l但是,如今多邊形的質量是均勻分布在其內部區(qū)域上的,也就是說,是與面積有關的!l剖分成N個三角形,分別求出其重心和面積,這時可以想象,原來質量均勻分布在內部區(qū)域上,而如今質量僅僅分布在這N個重心點上等假變換,這時候就可以利用剛剛的質點系重心公式了。l不過,要略微改一改,改成加權平均數,由于質量不是均勻分布的,每個質
5、點代表其所在三角形,其質量就是該三角形的面積有向面積!,這就是權!lC=sigma(Ai * Ci) / A (i=1N)lCi=Centroid( O Pi Pi+1)l = (O + Pi +Pi+1 )/3lC=sigma(Pi +Pi+1)(Pi Pi+1) ) /(6A)凸包( Convex Hull )/xiaoxia版#include #include #include typedef structdouble x;double y;POINT;POINT result102;/保管凸包上的點POINT a102;int n,top;double Distance(POINT p
6、1,POINT p2)/兩點間的間隔return sqrt(p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y);double Multiply(POINT p1,POINT p2,POINT p3) /叉積 return (p2.x-p1.x)*(p3.y-p1.y)-(p2.y-p1.y)*(p3.x-p1.x); int Compare(const void *p1,const void *p2)POINT *p3,*p4;double m; p3=(POINT *)p1; p4=(POINT *)p2; m=Multiply(a0,*p3,*p4
7、) ;if(m0) return 1;else if(m=0&(Distance(a0,*p3)Distance(a0,*p4)return 1;else return -1;void Tubao() int i; result0.x=a0.x; result0.y=a0.y; result1.x=a1.x; result1.y=a1.y; result2.x=a2.x; result2.y=a2.y; top=2; for(i=3;i=n;i+) while(Multiply(resulttop-1,resulttop,ai)=0)top-; resulttop+1.x=ai.x;
8、resulttop+1.y=ai.y; top+; int main() int i,p; double px,py,len,temp; while(scanf(%d,&n)!=EOF,n) for(i=0;in;i+) scanf(%lf%lf,&ai.x,&ai.y); if(n=1) printf(0.00n); continue; else if(n=2) printf(%.2lfn,Distance(a0,a1); continue; py=-1; for(i=0;in;i+) if(py=-1 | ai.ypy) px=ai.x; py=ai.y; p=i; else if(ai.y=py & ai.xpx) px=ai.x; py=ai.y; p=i; /swap(a0,ap) temp=a0.x; a0.x=ap.x; ap.x=temp; temp=a0.y; a0.y=ap.y; ap.y=temp; qsort(&a1,n-1,sizeof(double)*2,Compare); an.x=a0.x;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度魚苗養(yǎng)殖基地智能化改造與升級合同
- 2025數據電文也是合同的書面形式變更通知單
- 企業(yè)間資金支持合同(2024版)版B版
- 2025年汽車租賃車輛合同標準模板
- 2025年度國際貿易法律文件翻譯與認證合同
- 二零二五年度離婚協議書起草與婚姻財產分割及子女撫養(yǎng)咨詢合同
- 2025年度焊接工程保險合同范本
- 2025年度鍋爐自動化控制系統集成合同協議
- 2025年度節(jié)日花卉租賃及裝飾合同
- 2025年度護坡工程綠色施工與施工合同
- 2025年N1叉車司機考試試題(附答案)
- 《醫(yī)院財務分析報告》課件
- 2024年考研政治試題及答案
- 2025年初級社會工作者綜合能力全國考試題庫(含答案)
- 2022-2023學年五年級數學春季開學摸底考(四)蘇教版
- 【螞蟻?!?024中國商業(yè)醫(yī)療險發(fā)展研究藍皮書
- 授信審批部工作計劃及思路
- 建筑工程質量、安全與進度管控
- ASME B16.5-16.47法蘭尺寸對照表
- 對外漢語詞匯教學(第二版)PPT完整全套教學課件
- 產品報價單(5篇)
評論
0/150
提交評論