![[工学]ACMlecture_05计算几何基础ppt课件_第1页](http://file3.renrendoc.com/fileroot_temp3/2021-12/7/5c3ba136-87b4-4e8e-bb03-c2e8b0bd1066/5c3ba136-87b4-4e8e-bb03-c2e8b0bd10661.gif)
![[工学]ACMlecture_05计算几何基础ppt课件_第2页](http://file3.renrendoc.com/fileroot_temp3/2021-12/7/5c3ba136-87b4-4e8e-bb03-c2e8b0bd1066/5c3ba136-87b4-4e8e-bb03-c2e8b0bd10662.gif)
![[工学]ACMlecture_05计算几何基础ppt课件_第3页](http://file3.renrendoc.com/fileroot_temp3/2021-12/7/5c3ba136-87b4-4e8e-bb03-c2e8b0bd1066/5c3ba136-87b4-4e8e-bb03-c2e8b0bd10663.gif)
![[工学]ACMlecture_05计算几何基础ppt课件_第4页](http://file3.renrendoc.com/fileroot_temp3/2021-12/7/5c3ba136-87b4-4e8e-bb03-c2e8b0bd1066/5c3ba136-87b4-4e8e-bb03-c2e8b0bd10664.gif)
![[工学]ACMlecture_05计算几何基础ppt课件_第5页](http://file3.renrendoc.com/fileroot_temp3/2021-12/7/5c3ba136-87b4-4e8e-bb03-c2e8b0bd1066/5c3ba136-87b4-4e8e-bb03-c2e8b0bd10665.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ACM程序设计程序设计杭州电子科技大学 刘春英今天,今天,他他 了吗?了吗?AC每周一星每周一星4:0705341007053410陈晟陈晟 第五讲第五讲计算几何初步计算几何初步(Computational Geometry Basic)第一单元第一单元线段属性线段属性思索:思索:1 1、传统的计算线段相交的方法是什么?、传统的计算线段相交的方法是什么?2 2、传统方法和本方法的区别是什么?、传统方法和本方法的区别是什么?特别提示:特别提示:n以上引见的线段的三个属性,是计以上引见的线段的三个属性,是计算几何的根底,在很多方面都有运算几何的根底,在很多方面都有运用,比如求凸
2、包等等,请务必掌握!用,比如求凸包等等,请务必掌握!第二单元第二单元多边形面积和重心多边形面积和重心根本问题根本问题1:n给定一个简单多边形,求其面积。给定一个简单多边形,求其面积。n输入:多边形顶点按逆时针顺输入:多边形顶点按逆时针顺序陈列序陈列n输出:面积输出:面积S S思索如以下图形:思索如以下图形:Any good idea?先看最简单的多边形先看最简单的多边形三角形三角形三角形的面积:三角形的面积:n在解析几何里, ABC的面积可以经过如下方法求得:n点坐标 = 边长 = 海伦公式 = 面积思索:此方法的缺陷:思索:此方法的缺陷:计算量大精度损失更好的方法?计算几何的方法:计算几何的
3、方法:n在计算几何里,我们知道,ABC的面积就是“向量AB和“向量AC两个向量叉积的绝对值的一半。其正负表示三角形顶点是在右手系还是左手系。ABC成左手系,负面积ABC成右手系,正面积BCACBA大功告成:大功告成:nArea(A,B,C)= 1/2 * (AB) (AC)n = /2n特别留意:n 以上得到是有向面积有正负! Xb X a Yb Y aXc X a Yc Y a凸多边形的三角形剖分凸多边形的三角形剖分n很自然地,我们会想到以 P1为扇面中心,衔接P1Pi就得到N-2个三角形,由于凸性,保证这些三角形全在多边形内,那么,这个凸多边形的有向面积:n A=sigma(Ai) (i=
4、1N-2)P1P2P3P4P5P6A1A2A3A4凹多边形的面积?凹多边形的面积?P1P4P3P2依然成立!依然成立!多边形面积公式:A=sigma(Ai) (i=1N-2)结论: “有向面积A比“面积S其实更本质!恣意点为扇心的三角形剖分:恣意点为扇心的三角形剖分:n我们能把多边形分成N-2个三角形,为什么不能分成N个三角形呢?n比如,以多边形内部的一个点为扇心,就可以把多边形剖分成 N个三角形。P0P1P2P6P5P4P3前面的三角剖分显然对于多边形内部前面的三角剖分显然对于多边形内部恣意一点都是适宜的!恣意一点都是适宜的!我们可以得到:A=sigma(Ai) i=1N 即:A=sigma
5、 /2 i=1N Xi X0 Yi Y0X(i+1) X0 Y(i+1) Y0能否把扇心移到多边形以外呢?能否把扇心移到多边形以外呢?P0P1P2P3P4既然内外都可以,为什么不设既然内外都可以,为什么不设P0为坐标原点呢?为坐标原点呢?OP1P2P3P4如今的公式?简化的公式:简化的公式:A=sigma /2 i=1N Xi YiX(i+1) Y(i+1)面积问题面积问题搞定!搞定!根本问题根本问题2:n给定一个简单多边形,求其重心。给定一个简单多边形,求其重心。n输入:多边形顶点按逆时针顺输入:多边形顶点按逆时针顺序陈列序陈列n输出:重心点输出:重心点C C从三角形的重心谈起:从三角形的重
6、心谈起:三角形的重心是: (x1+x2+x3) / 3,(y1+y2+y3) / 3可以推行否?Sigma(xi)/N , sigma(yi)/N (i=1N) ?看看一个特例:看看一个特例:.缘由:缘由:n错误的推行公式是“质点系重心公式,即假设以为多边形的质量仅分布在其顶点上,且均匀分布,那么这个公式是对的。n但是,如今多边形的质量是均匀分布在其内部区域上的,也就是说,是与面积有关的!Solution:n剖分成N个三角形,分别求出其重心和面积,这时可以想象,原来质量均匀分布在内部区域上,而如今质量仅仅分布在这N个重心点上等假变换,这时候就可以利用刚刚的质点系重心公式了。n不过,要略微改一改
7、,改成加权平均数,由于质量不是均匀分布的,每个质点代表其所在三角形,其质量就是该三角形的面积有向面积!,这就是权!公式:公式:nC=sigma(Ai * Ci) / A (i=1N)nCi=Centroid( O Pi Pi+1)n = (O + Pi +Pi+1 )/3nC=sigma(Pi +Pi+1)(Pi Pi+1) ) /(6A)第三单元第三单元凸包凸包( Convex Hull )( Convex Hull )凸包模板:凸包模板:/xiaoxia版#include #include #include typedef structdouble x;double y;POINT;POI
8、NT result102;/保管凸包上的点POINT a102;int n,top;double Distance(POINT p1,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,*p
9、4;double m; p3=(POINT *)p1; p4=(POINT *)p2; m=Multiply(a0,*p3,*p4) ;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+) whil
10、e(Multiply(resulttop-1,resulttop,ai)=0)top-; resulttop+1.x=ai.x; 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; an.y=a0.y; Tubao(); len=0.0; for(i=0;itop;i+)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年事业单位工勤技能-重庆-重庆土建施工人员五级(初级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-北京-北京铸造工二级(技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-北京-北京热力运行工二级(技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-北京-北京有线广播电视机务员四级(中级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-北京-北京土建施工人员三级(高级工)历年参考题库典型考点含答案解析
- 儿童歌曲演唱风格面试题及答案
- 行业前沿业务创新面试题及答案分享
- 建筑工程结构安全评估与加固方案
- 混凝土结构施工中裂缝控制方案
- 施工现场气候条件应对方案
- 医院食堂管理方案计划书
- 大客户营销管理策略对提高客户满意度和忠诚度的影响
- 《螺纹的种类和应用》课件
- 医学一等奖《白血病》课件
- 高空作业车专项应急预案
- 发现普洱茶的第一个医学实验报告
- 全自动血液细胞分析仪参数
- (完整版)过去完成时ppt
- 1输变电工程施工质量验收统一表式(线路工程)
- 养老护理员(技师、高级技师)知识考试复习题库(含答案)
- 学校安全“日管控、周排查、月总结”工作制度
评论
0/150
提交评论