ACM课件(lecture_05)计算几何基础_20080325
计算几何PPT
β
α- β
α
/
ACM/ICPC集训队 P14
向量的运算
点积 α · β = x1×x2 + y1×y2 = |α|·|β|·cosθ 叉积 α×β = x1×y2 – x2×y1 = |α|·|β|·sinθ
β
θ
α
/
凸包的求法
卷包裹法
/
ACM/ICPC集训队 P39
凸包的求法
Graham-Scan算法
push(p1); push(p2); i = 3; while i <= n do if p1在栈顶边的左手方 向 then push(pi); 并且i++ else pop();
Q1 Q1 P2 P1 Q2 P1 P2
Q2
/
ACM/ICPC集训队 P22
向量的运算的应用
计算点到线段、直线的最近点 求点到直线的距离 求点关于直线的对称点 构造两点中垂线 ……
/
ACM/ICPC集训队 P23
ACM/ICPC集训队 P29
多边形的三角剖分
多边形的三角剖分,就是仅仅使用多边形的对角 线将多边形P拆分成多个不重叠的三角形。 通过三角剖分,我们可以将复杂的多边形转化相 对比较简单的三角形集合。
定理:对于具有n条边的多边形,不论我们使用什 么剖分方法,总是只能解剖出n-2个三角形
/ ACM/ICPC集训队 P30
/
ACM/ICPC集训队 P18
判断线段和直线是否相交
取直线上一点,连接线段的两点,如果所得的两系线段都在直线的同 一侧,则不相交。
/
ACM/ICPC集训队 P19
判断两线段是否相交
两条线段恰有惟一一个不是端点的公共点,称之 为“规范相交”。 否则称为非规范相交。
北京大学ACM暑期课讲义-计算几何教程
计算几何教程
计算几何的恶心之处
代码长,难写。
需要讨论各种边界情况。后面所介绍的算
法,有些对于边界情况的处理很完美,不 需要再做讨论;有些则不然,需要自行处 理边界情况。
精度误差
二维矢量
2-Dimension Vector
矢量
既有大小又有方向的量。
算法演示
2 被弹出栈,3 进栈。
算法演示
没有点被弹出栈,4 进栈。
算法演示
4 被弹出栈,5 进栈。
算法演示
5 被弹出栈,6 进栈。
算法演示
6 被弹出栈,7 进栈。
算法演示
如此直到下凸壳被找到。
算法演示
倒序进行扫描找到上凸壳。
Graham 扫描的时间复杂度
这太傻缺了。算法的瓶颈在排序,所以时
总时间复杂度 O(N2 log N)。
算法扩展
SPOJ CIRUT
求恰好被覆盖 1 次、2 次、„、N 次的面积。
算法的本质在于对“裸露”部分进行处理。
这种方法也可以用于求很多圆与很多凸多 边形的面积并——但是情况复杂得多,要 讨论的情况也多得多。
三维矢量
3-Dimension Vector
总体来说讨论比较辛苦,写起来不算很难。
精度存在比较大的问题,而且半平面交的
题目一般都容许 O(N2) 算法,所以并不是 很常用。
半平面交练习题
POJ 1279 POJ 3525 POJ 2451 POJ 3384
求多边形的核。核中的点满足其到多边形边 界上任一点之间的线段只与多边形在那一点相交。 求凸多边形最大内切圆半径。 裸的半平面交。朱泽园专门为他的算法出的 题,要求 O(N log N) 算法。 求在凸多边形内部放两个半径为 r 的圆所能 覆盖的最大面积。两圆可以重叠,但不能与多边形相交。 需要用到旋转卡壳。
《计算几何讲》课件
直角三角形任意直角边的平方等于其斜边的平方和另一直角边的平方。
2
平行线之间的距离
平行线之间的距离等于任意一点到另一平行线的垂直距离。
3
角平分线定理
角的平分线将其对边按相同比例分割。
5. 计算几何的解题策略
1 画图
将问题转化为几何图形,并标注所需信息。
2 利用定理和公式
运用已知的几何定理和公式来解题。
《计算几何讲》PPT课件
计算几何是研究几何图形的性质及其计算方法的分支学科,应用广泛于计算 机图形学、CAD、计算机辅助几何设计等领域。
1. 计算几何的定义
计算几何是研究在计算机上对几何图形及其性质进行表示、计算和处理的学 科。
2. 计算几何的应用
1 计算机图形学
用于生成和显示三维几何 图形,比如动画、游戏和 虚拟现实。
于设计和模拟工程和建 筑物,提高效率和准确性。
用于绘制几何图形、计算 测量和设计规划。
3. 计算几何的基本概念
点
几何图形的基本元素,没有大 小和方向。
线段
由两个点确定的线段,有长度 和方向。
直线
无限延伸的线段,由无数个点 确定。
4. 计算几何的相关定理
1
直角三角形的勾股定理
3 逻辑推理
通过观察几何图形的性质和关系,进行推理和解答。
6. 计算几何的实例讲解
三角形的分类
介绍三角形的分类及其特点,给 予示例演示。
内切圆和外接圆
讲解几何图形中内切圆和外接圆 的性质及应用。
平行线与角度
解释平行线与角度之间的关系及 相关定理。
7. 结论与总结
计算几何是一个有着广泛应用和丰富理论的学科,掌握计算几何的基本概念和解题策略,将有效提高问题解决 的能力。
ACM课件(lecture_08)-31页精选文档
上一周,
你
了吗?
2020/1/10
2
每周一星(7):
07054202
2020/1/10
3
第八讲
母函数及其应用
(Generation function)
2020/1/10
4
从递推关系说起
2020/1/10
5
研究以下多项式乘法:
(8-1)
可以看出:
x2项的系数a1a2+a1a3+...+an-1an中所有的项包括n个元 素a1,a2, …an中取两个组合的全体; 同理:x3项系数包含了从n个元素a1,a2, …an中取3 个元素组合的全体;
HDOJ_1398 Square Coins
Sample Input 2 10 30 0
Sample Output 1 4 27
2020/1/10
19
算法分析:
典型的利用母函数可解的题目。
G(x)=(1+x+x2+x3+x4+…)(1+x4+x8+x12 +…)(1+x9+x18+x27+…)…
2020/1/10
以此类推。
2020/1/10
6
特例:
若令a1=a2= …=an=1,在(8-1)式中 a1a2+a1a3+...+an-1an项系数中每一个组合有 1个贡献,其他各项以此类推。故有:
(8-2)
2020/1/10
7
母函数定义:
对于序列a0,a1,a2,…构造一函数:
称函数G(x)是序列a0,a1,a2,…的 母函数
ACM计算几何
快速排斥试验引申
• 思考: • 简单的改造一下就可以用来判断一个矩形 是否在另一个矩形内部 • NKOJ 1177 rectangles
凸包
• convex hull • 是指对于平面上给定的一些点,选取一个 最小的凸多边形使得这些点或者在其内部, 或者在其边上
求凸包的Graham扫描法
• 对于一个有三个或以上点的点集Q • 令p0为Q中Y-X坐标排序下最小的点 设<p1,p2,...pm>为对其余点按以p0为中心的极角 逆时针排序所得的点集(如果有多个点有相同的 极角,除了距p0最远的点外全部移除) 压p0进栈S,压p1进栈S,压p2进栈S for(i=3;i<=m;++i){ while(由S的栈顶元素的下一个元素、S的栈顶 元素以及pi构成的折线段不拐向左侧){ 对S弹栈 压pi进栈S } } return S
计算几何
需要注意的细节
• 常用头文件#include<math.h> • 计算几何中一般来说使用double型比较频 繁,请注意数据类型的选择,该用实数的 时候就用double,而float容易失去精度。 • 判断double型的x是否为0,应当用x<eps && x>-eps(或者fabs(x)<eps),其中eps 代表某个精度,常常取eps=0.000001,还 有其他类似情况也要注意double类型的精 度问题
需要注意的细节
• 圆周率取3.141592654或者更精确,或者用 acos(-1) • 角度制和弧度制的转换,C/C++中的三角函 数均为弧度制 • 尽量少用除法,开方,三角函数,容易失 去精度。用除法时注意除数不为0
向量及其运算
计算几何基础知识讲义
计算几何基础知识讲义一.基础知识1.两点间的距离公式:已知:平面上的两点的直角坐标分别为P1(x1,y1),P2(x2,y2),则P1和P2两点间的距离为 d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) 2.线段的中点坐标公式:已知:平面上的两点的直角坐标分别为P1(x1,y1),P2(x2,y2),则线段P1P2的中点坐标为 x=(x1+x2)/2 y=(y1+y2)/2 3.直线的斜率公式:已知:平面上的两点的直角坐标分别为P1(x1,y1),P2(x2,y2),则线段P1P2所在的直线的斜率为 k=(y2-y1)/(x2-x1) 4.直线的点斜式方程:已知:直线过点P0(x0,y0),斜率为k,则该直线所在的方程为 y=k(x-x0)+y0=kx+y0-kx0=kx+b(与y 轴交点的纵坐标:纵截距) 5、三角形面积2ABC AB AC S ⨯=。
当然,还有其他的许多方法,包括大家熟知的1sin 2S ab C =以及Hero 公式。
Hero 公式是令2a b cp ++=,则()()()S p p a p b p c =---。
6、多边形面积计算如果一个多边形的顶点是按逆时针(顺时针也可)顺序排列的,那么我们可以找到一种简洁的面积算法。
例如右图是一个四边形P 1P 2P 3P 4,设P 5=P 1 ,x i 是各点在x 轴上的射影。
我们称P i X i X i+1P i+1是一个“有向梯形”,并定义其面积为:“有向梯形”的面积是可正可负的,这就是称其“有向”的原因。
而整个四边形的面积则是: 这个面积就是正数了。
对于各种特殊的四边形,这个算法仍然成立。
这些例子如凹四边形(图2),被x 轴切割的四边形(图3),注意图3中有向梯形P 1X 1X 2P 2实际上并不是严格的梯形,但这并不影响结果的正确性,这就是“有向梯形”带符号的好处。
这个面积算法对按逆时针排列顶点的四边形的计算结果为正,而对按顺时针排列顶点的四边形的计算结果为负。
ACM培训精品PPT课件
自己过滤空格?麻烦!
输入输出
读一个非空白字符, 方法一:
char str[2]; scanf(“%1s”, str); // %1s扫描前导空白,并且只读一个字符 char c = str[0]; 方法二: 强制扫描空白 在%前面加上一个空格表示“强制扫描前导空白” scanf(“ %c”, &ch); 前面那个读人物信息的完整scanf语句:
LCS (Longest Common Subsequence) 最长 公共子串
输入输出
C:
scanf printf
C++:
cin cout
速度快 格式容易控制
使用简单, 自动识别类型 格式控制较麻烦
数据规模较大时, 推荐(必须)使用scanf 以 避免超时(TLE)
输入输出
cout: 带缓冲输出 printf: 不带缓冲输出
Ctrl+Z 2.最好不要把C和C++的输入输出语句混着用,会造成一些莫名其妙的问题 3.我个人倾向于使用纯C的输入输出,因为方便且速度快。
关于重定向操作
当程序要输入的内容很多时,从文件读入的操作变得非常重 要,特别是需要调试时,这样可以避免你反复的从键盘敲入重
复的内容。
使用标准输入语句,可以使用重定向命令行
scanf(“%s %c %s”, name, &gender, ability);
输入输出
同理,我们也可以用其它字符来扫描其它类型 的无关输入
比如,输入年月日的信息
2007-08-03 scanf(“%d-%d-%d”, &y, &m, &d); 其它类似
浮点数的输入问题
为什么说while(in!=0.00)不合理呢? 如果不合理应该怎么判断!!
ACM讲义,ACM课件
9
最常见题型
Dynamic Programming(动态规划) Greedy(贪心) Complete Search(穷举) Flood Fill (种子填充) Shortest Path (最短路径) Recursive Search Techniques (回溯) Minimum Spanning Tree (最小生成树) Knapsack(背包) Computational Geometry(计算几何) Network Flow(网络流) Eulerian Path (欧拉回路) Two-Dimensional Convex Hull (二维凸包) BigNums (大数) Heuristic Search(启发式搜索) Approximate Search (近似搜索) Ad Hoc Problems(杂题)
ACM程序设计大赛
10
ACM程序设计大赛
11
离散数学第1讲 命题逻辑基础
数理逻辑将能够判断真假的陈述句称作命题。 命题通常使用大写字母A,B,…,Z或带下标的大写字母或数字 表示,如Ai,R等,例如: A1:我是一名大学生。 联结词: 合取联结词: 析取联结词: 否定联结词: 蕴涵联结词: 等价联结词: 逻辑真值: 0,1
16
命题的翻译: 例:假如上午不下雨,我去看电影,否则就在家里读书或看报。 解:设P:上午下雨;Q:我去看电影;R:我在家里读书;S: 我在家里看报。 本例可表示为: (PQ)∧(P(R∨S))。
ACM程序设计大赛
17
命题公式的解释:
定义 设P1,P2,…,Pn是出现在命题公式G中的全部命题变 元,指定P1,P2,…,Pn的一组真值,称这组真值为G的 一个解释或赋值,记作I,公式G在I下的真值记作TI (G)。 例如,G=(P∧Q)R,则I: P Q R 1 1 0 是G的一个解释,在这个解释下G的真值为1,即TI(G)=1。
acm计算几何_讲义
PKU 3304 segments
Output
For each test case, your program must output "Yes!", if a line with desired property exists and must output "No!" otherwise. You must assume that two floating point numbers a and b are equal if |a - b| < 10-8.
PKU 3304 segments
Description
ห้องสมุดไป่ตู้
Given n segments in the two dimensional space, write a program, which determines if there exists a line such that after projecting these segments on it, all projected segments have at least one point in common.
You are to find the length of the shortest path through a chamber containing obstructing walls. The chamber will always have sides at x = 0, x = 10, y = 0, and y = 10. The initial and final points of the path are always (0, 5) and (10, 5). There will also be from 0 to 18 vertical walls inside the chamber, each with two doorways. The figure below illustrates such a chamber and also shows the path of minimal length.
ACM算法 计算几何基础ppt课件
57 2020/4/15
58 2020/4/15
59 2020/4/15
60 2020/4/15
61 2020/4/15
62 2020/4/15
63 2020/4/15
64 2020/4/15
特别提醒:
以上介绍的线段的三个属性, 是计算几何的基础,在很多方 面都有应用,比如求凸包等等, 请务必掌握!
15 2020/4/15
第二单元
多边形面积 和重心
16 2020/4/15
基本问题(1):
给定一个简单多边形,求其 面积。
输入:多边形(顶点按逆时 针顺序排列)
输出:面积S
17 2020/4/15
A=sigma(Ai) (i=1…N-2)
P1
A1 P2
P6 A4
P5 A3
A2 P4
P3
25 2020/4/15
凹多边形的面积?
P3
P2 P4
P1
26 2020/4/15
依然成立!!!
多边形面积公式:A=sigma(Ai) (i=1…N-2)
结论: “有向面积”A比“面积”S其实更本
质!
27 2020/4/15
思考如下图形:
18 2020/4/15
Any good idea?
19 2020/4/15
先讨论最简单的多边形——三角形
20 2020/4/15
三角形的面积:
在解析几何里, △ABC的面积可以通过 如下方法求得:
点坐标 => 边长 => 海伦公式 => 面积
21 2020/4/15
思考:此方法的缺点:
C=sigma((↑Pi +↑Pi+1)(↑Pi ×↑Pi+1) ) /(6A)
计算几何优质获奖课件
叉积,线段相交旳鉴定
四、叉积。
叉积旳成果为一种向量。
P1
A1 P2
P6 A4
P5 A3
A2 P4
2024/9/21
P3
14
凹多边形旳面积?
依然分割成三角形 计算措施不变
注意符号,最终取绝对值
2024/9/21
15
任意点为扇心旳三角形剖分:
我们能把多边形提成N-2个三角形,为何不能提成N个三角形呢? 例如,以多边形内部旳一种点为扇心,就能够把多边形剖提成 N个三角
12
计算几何旳措施:
在计算几何里,我们懂得,△ABC旳面积就是“向量AB”和“向量 AC”两个向量叉积旳绝对值旳二分之一。其正负表达三角形顶点 是在右手系还是左手系。
B
C
A ABC成左手系,负面积
2024/9/21
C B
A ABC成右手系,正面积 13
凸多边形旳三角形剖分
很自然地,我们会想到以 P1为扇面中心,连接P1Pi就得到N-2个三角形,因为凸性,确保这 些三角形全在多边形内,那么,这个凸多边形旳有向面积: A=sigma(Ai) (i=1…N-2)
2、A在线段CD上旳充要条件:
a) 。
AC×AD = 0,几何意义,AC和AD构成旳平行四边形旳面积为0,即A、C、D三点共线
b)
A点在CD之间,A.x处于C.x和D.x之间而且A.y处于C.y和D.y之间
acm中的数学问题数论部分省公开课一等奖全国示范课微课金奖PPT课件
a = 81, b = 63, a mod b = 18 a ← 63, b ← 18, a mod b = 9 a ← 18, b ← 9, a mod b = 0 所以9就是63与81最大条约数
第27页
欧几里德算法
欧几里德算法:
while b>0 do r←a%b a←b b←r
第一部分:同余相关
整除性质
欧几里德算法
扩展欧几里德算法
中国剩下定理
第二部分:素数相关
算术基本定理
欧拉定理
素数测试
Pollard rho方法
第7页
数论主要内容
第一部分:同余相关
整除性质
欧几里德算法
扩展欧几里德算法
中国剩下定理
第二部分:素数相关
算术基本定理
欧拉定理
素数测试
整除基本性质 欧几里德算法 扩展欧几里德算法 中国剩下定理
第43页
中国剩下定理
同模情况下,有这么性质:
乘法标准
8 mod 7 = 1
16 mod 7 = 2 64 mod 7 = 8 mod 7
加法标准 8 mod 7 = 1 10 mod 7 = 3
18 mod 7 = 4
第44页
故d|a。 • 所以d是a,b公因数 • 反之,假如d是a,b公因数,也能证出d
是b,c公因数
第12页
第一部分 同余相关
整除基本性质 欧几里德算法 扩展欧几里德算法 中国剩下定理
第13页
请写出12,30共有约数
第14页
请写出12,30共有约数 1,
第15页
请写出12,30共有约数 1, 2,
第37页
扩展欧几里德算法
扩展欧几里德算法(递归实现): int gcd(int a,int b) if b=0 then x←1 y←0 return a d←gcd(b,a%b) x'←y y'←x-[a/b]y x←x' y←y' return d
计算几何--ACM
三计算模型
规定RAM的原始运算如下: 1)算术运算 2)两个实数之间的比较 3)间接寻址及求根运算,三角函数运算,指 数函数运算,对数函数运算。 执行每种运算耗费一个时间单位。
四常见计算几何基本问题
• 矢量的概念
• • • • • • • • • • • • • • • • • • • • • • • • • • • •
基本问题(续)
• 在实际编程中,没有必要计算所有的交点,首先应判断线段和多边形的边是否内 交,倘若线段和多边形的某条边内交则线段一定在多边形外;如果线段和多边形 的每一条边都不内交,则线段和多边形的交点一定是线段的端点或者多边形的顶 点,只要判断点是否在线段上就可以了。
得出算法如下: if 线端PQ的端点不都在多边形内 then return false; 点集pointSet初始化为空; for 多边形的每条边s do if 线段的某个端点在s上 then 将该端点加入pointSet; else if s的某个端点在线段PQ上 then 将该端点加入pointSet; else if s和线段PQ相交 // 这时候已经可以肯定是内交了 then return false; 将pointSet中的点按照X-Y坐标排序; for pointSet中每两个相邻点 pointSet[i] , pointSet[ i+1] do if pointSet[i] , pointSet[ i+1] 的中点不在多边形中 then return false; return true; 这个过程中的排序因为交点数目肯定远小于多边形的顶点数目n,所以最多是 常数级的复杂度,几乎可以忽略不计。因此算法的时间复杂度也是O(n)。
基本问题(续)
基本问题(续)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2013-8-4
C
B A ABC成右手系,正面积
23
大功告成:
Area(A,B,C)= 1/2 * (↑AB) × (↑AC)
=∣
2013-8-4
Xb – X a Xc – X a
Yb –Y a
Yc –Y a
∣/2
24
特别注意: 以上得到是有向面积(有正负)!
凸多边形的三角形剖分
51
2013-8-4
52
2013-8-4
53
2013-8-4
54
2013-8-4
55
2013-8-4
56
2013-8-4
57
2013-8-4
58
2013-8-4
59
2013-8-4
60
2013-8-4
61
2013-8-4
62
2013-8-4
63
2013-8-4
64
2013-8-4
P1
2013-8-4
26
依然成立!!!
多边形面积公式:A=sigma(Ai) (i=1…N-2)
结论: “有向面积”A比“面积”S其实更本 质!
2013-8-4
27
任意点为扇心的三角形剖分:
我们能把多边形分成N-2个三角形,为什么不 能分成N个三角形呢? 比如,以多边形内部的一个点为扇心,就可以 把多边形剖分成 N个三角形。
第三单元
凸包( Convex Hull )
2013-8-4
40
2013-8-4
41
2013-8-4
42
2013-8-4
43
2013-8-4
44
2013-8-4
45
2013-8-4
46
2013-8-4
47
2013-8-4
48
2013-8-4
49
2013-8-4
50
2013-8-4
P3
P2
P4 P0
P1
P5
P6
2013-8-4 28
前面的三角剖分显然对于多边形内部 任意一点都是合适的!
我们可以得到: A=sigma(Ai) ( i=1…N )
即:A= ∣
sigma
2013-8-4
Xi – X0
Yi –Y0
X(i+1) – X0 Y(i+1) –Y0
∣/2
29
( i=1…N )
能否把扇心移到多边形以外呢?
P3
P4
P2
P1
P0
2013-8-4
30
既然内外都可以,为什么不设P0 为坐标原点呢?
P3 P4
P2
P1
现在的公式?
O
2013-8-4 31
简化的公式:
面积问题 搞定!
Yi
A=
2013-8-4
sigma
∣
Xi
X(i+1) Y(i+1)
∣/2
( i=1…N )
32
基本问题(2):
2013-8-4 37
公式:
C=sigma(Ai * Ci) / A (i=1…N) Ci=Centroid(△ O Pi Pi+1)
= (O + ↑Pi +↑Pi+1 )/3 C=sigma((↑Pi +↑Pi+1)(↑Pi ×↑Pi+1) ) /(6A)
2013-8-4
38
全部搞 定!
2013-8-4
15
第二单元
多边形面积和重心
2013-8-4
16
基本问题(1):
给定一个简单多边形,求其面积。 输入:多边形(顶点按逆时针顺 序排列) 输出:面积S
2013-8-4
17
思考如下图形:
2013-8-4
18
Any good idea?
2013-8-4
19
先看最简单的多边形——三角形
2013-8-4 68
Any question?
课后作业:
《ACM Programming》Exercise(5) _Geometry
2013-8-4
70
下一讲:
并查集
2013-8-4
71
Welcome to HDOJ
Thank You ~
2013-8-4 72
ACM程序设计
杭州电子科技大学 刘春英 acm@
今天,
你
了吗?
2013-8-42每周星(4):07053410陈晟
2013-8-4
3
第五讲
计算几何初步
(Computational Geometry Basic)
2013-8-4
4
第一单元
线段属性
2013-8-4 5
2013-8-4
2013-8-4
20
三角形的面积:
在解析几何里, △ABC的面积可以通过 如下方法求得:
点坐标 => 边长 => 海伦公式 => 面积
2013-8-4
21
思考:此方法的缺点:
计算量大 精度损失
更好的方法?
2013-8-4
22
计算几何的方法:
在计算几何里,我们知道,△ABC的面积 就是“向量AB”和“向量AC”两个向量叉 积的绝对值的一半。其正负表示三角形 顶点是在右手系还是左手系。
65
2013-8-4
66
2013-8-4
67
凸包模板:
//xiaoxia版 #include <stdio.h> #include <math.h> #include <stdlib.h> typedef struct { double x; double y; }POINT; POINT result[102]; // 保存凸包上的点 POINT a[102];
6
2013-8-4
7
2013-8-4
8
2013-8-4
9
2013-8-4
10
2013-8-4
11
2013-8-4
12
2013-8-4
13
思考:
1、传统的计算线段相交的方法是什么? 2、传统方法和本方法的区别是什么?
2013-8-4
14
特别提醒:
以上介绍的线段的三个属性,是计 算几何的基础,在很多方面都有应 用,比如求凸包等等,请务必掌握!
给定一个简单多边形,求其重心。 输入:多边形(顶点按逆时针顺 序排列) 输出:重心点C
2013-8-4
33
从三角形的重心谈起:
三角形的重心是: (x1+x2+x3) / 3,(y1+y2+y3) / 3
可以推广否? Sigma(xi)/N , sigma(yi)/N (i=1…N) ???
2013-8-4
34
看看一个特例:
2013-8-4
35
原因:
错误的推广公式是“质点系重心公式”, 即如果认为多边形的质量仅分布在其顶 点上,且均匀分布,则这个公式是对的。
但是,现在多边形的质量是均匀分布在 其内部区域上的,也就是说,是与面积 有关的!
2013-8-4
36
Solution:
剖分成N个三角形,分别求出其重心和面 积,这时可以想象,原来质量均匀分布 在内部区域上,而现在质量仅仅分布在 这N个重心点上(等假变换),这时候就 可以利用刚才的质点系重心公式了。 不过,要稍微改一改,改成加权平均数, 因为质量不是均匀分布的,每个质点代 表其所在三角形,其质量就是该三角形 的面积(有向面积!),——这就是权!
很自然地,我们会想到以 P1为扇面中心, 连接P1Pi就得到N-2个三角形,由于凸性, 保证这些三角形全在多边形内,那么, 这个凸多边形的有向面积: A=sigma(Ai) (i=1…N-2)
P6 P1 A4 P5 A3 A1 P2
2013-8-4
A2 P3
P4
25
凹多边形的面积?
P3
P2 P4