ACM算法 计算几何基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
能不能把扇心移到多边形以外呢? 能不能把扇心移到多边形以外呢?
P3 P4
P2
P1
P0
30 2010-1-19
既然内外都可以,为什么不设P0为 既然内外都可以,为什么不设P0为 坐标原点呢? 坐标原点呢?
P3 P4 P2
P1
现在的公式?
O
31 2010-1-19
简化的公式:
A=
sigma
∣
Xi
Yi
Solution:
剖分成N个三角形,分别求出其重心和 面积,这时可以想象,原来质量均匀分 布在内部区域上,而现在质量仅仅分布 在这N个重心点上(等假变换),这时 候就可以利用刚才的质点系重心公式了. 不过,要稍微改一改,改成加权平均 加权平均数, 加权平均 因为质量不是均匀分布的,每个质点代 表其所在三角形,其质量就是该三角形 有向面积!),——这就是权! 的面积(有向面积 有向面积
B C A ABC成左手系,负面积 C B A ABC成右手系,正面积
23 2010-1-19
大功告成: 大功告成:
Area(A,B,C)= 1/2 * (↑AB) × (↑AC)
=∣
Xb – X a Xc – X a
Yb –Y a
Yc –Y a
∣/2
24 2010-1-19
特别注意: 以上得到是有向面积(有正负)! 有向面积( 有向面积 有正负)
凸多边形的三角形剖分
很自然地,我们会想到以 P1为扇面中心, 连接P1Pi就得到N-2个三角形,由于凸 性,保证这些三角形全在多边形内,那 么,这个凸多边形的有向面积: A=sigma(Ai) (i=1…N-2)
P6 P1 A4 P5 A3 A1 P2 A2 P3 P4
25 2010-1-19
凹多边形的面积?
P3 P2 P4 P0 P5 P6
28 2010-1-19
P1
前面的三角剖分显然对于多边形内 部任意一点都是合适的!
我们可以得到: A=sigma(Ai) ( i=1…N )
即
:
A= ∣
sigma
Xi – X0
Yi –Y0
X(i+1) – X0 Y(i+1) –Y0
∣/2
29 2010-1-19
( i=1…N )
14 2010-1-19
特别提醒:
以上介绍的线段的三个属性, 是计算几何的基础,在很多方 面都有应用,比如求凸包等等, 请务必掌握!
15 2010-1-19
第二单元
多边形面积 和重心
16 2010-1-19
基本问题(1 基本问题(1):
给定一个简单多边形,求其 面积. 输入:多边形(顶点按逆时 针顺序排列) 输出:面积S
5 2010-1-19
6 2010-1-19
7 2010-1-19
8 2010-1-19
9 2010-1-19
10 2010-1-19
11 2010-1-19
12 2010-1-19
13 2010-1-19
思考:
1,传统的计算线段相交的方法是什么? 2,传统方法和本方法的区别是什么?
37 2010-1-19
公式: 公式:
C=sigma(Ai * Ci) / A (i=1…N) Ci=Centroid(△ O Pi Pi+1) = (O + ↑Pi +↑Pi+1 )
C=sigma((↑Pi +↑Pi+1)(↑Pi ×↑Pi+1) ) /(6A)
38 2010-1-19
全部搞 定!
17 2010-1-19
思考如下图形:
18 2010-1-19
Any good idea?
19 2010-1-19
先讨论最简单的多边形——三角形 先讨论最简单的多边形——三角形
20 2010-1-19
三角形的面积:
在解析几何里, △ABC的面积可以通过 如下方法求得: 点坐标 => 边长 => 海伦公式 => 面积
34 2010-1-19
看看一个特例: 看看一个特例:
35 2010-1-19
原因: 原因:
错误的推广公式是"质点系重心公式", 即如果认为多边形的质量仅分布在其顶 点上,且均匀分布,则这个公式是对的. 但是,现在多边形的质量是均匀分布在 其内部区域上的,也就是说,是与面积 有关的!
36 2010-1-19
X(i+1) Y(i+1)
∣/2
面积问题 搞定! 搞定!
( i=1…N )
32 2010-1-19
基本问题(2 基本问题(2):
给定一个简单多边形,求其 重心. 输入:多边形(顶点按逆时 针顺序排列) 输出:重心点C
33 2010-1-19
从三角形的重心谈起: 从三角形的重心谈起:
三角形的重心是: (x1+x2+x3) / 3,(y1+y2+y3) / 3 可以推广否? Sigma(xi)/N , sigma(yi)/N (i=1…N) ???
来自百度文库int n,top;
68 2010-1-19
Any Question?
69 2010-1-19
相关练习题: 相关练习题:
1086 You can Solve a Geometry Problem too 1115 Lifting the Stone 2036 改革春风吹满地 1348,1392 Zoj: 1450,1541
P3
P2 P4
P1
26 2010-1-19
依然成立!!! 依然成立!!!
多边形面积公式:A=sigma(Ai) (i=1…N-2)
结论: "有向面积"A比"面积"S其实更本 本 质!
27 2010-1-19
任意点为扇心的三角形剖分: 任意点为扇心的三角形剖分:
我们能把多边形分成N-2个三角形,为什么不 能分成N个三角形呢? 比如,以多边形内部的一个点为扇心,就可 以把多边形剖分成 N个三角形.
ACM 程序设计
计算机学院 刘春英
1 2010-1-19
今天, 今天,
你 了吗?
2 2010-1-19
每周一星(6): 每周一星(
老菜 (donhau)
3 2010-1-19
第七讲 计算几何初步
(Computational Geometry Basic)
4 2010-1-19
第一单元
线 段 属 性
70 2010-1-19
Thank you!
See you next week.
71 2010-1-19
�
61 2010-1-19
62 2010-1-19
63 2010-1-19
64 2010-1-19
65 2010-1-19
66 2010-1-19
67 2010-1-19
凸包模板: 凸包模板:
//xiaoxia版 #include <stdio.h> #include <math.h> #include <stdlib.h> typedef struct { double x; double y; }POINT; POINT result[102]; // 保存凸包上的点 POINT a[102];
39 2010-1-19
第三单元
凸包( Convex Hull )
40 2010-1-19
41 2010-1-19
42 2010-1-19
43 2010-1-19
44 2010-1-19
45 2010-1-19
46 2010-1-19
47 2010-1-19
48 2010-1-19
21 2010-1-19
思考:此方法的缺点: 思考:此方法的缺点:
计算量大 精度损失 更好的方法?
22 2010-1-19
计算几何的方法: 计算几何的方法:
在计算几何里,我们知道,△ABC的面 积就是"向量AB"和"向量AC"两个向 量叉积的绝对值的一半.其正负表示三 角形顶点是在右手系还是左手系.
49 2010-1-19
50 2010-1-19
51 2010-1-19
52 2010-1-19
53 2010-1-19
54 2010-1-19
55 2010-1-19
56 2010-1-19
57 2010-1-19
58 2010-1-19
59 2010-1-19
60 2010-1-19