Transcript 计算几何专题
计算几何专题
姚金宇
Outline
概述
元素
公式
叉积、点积、三角定理、面积定理……
算法
点,线,角,平面,半平面,圆,多边形,凸包……
求凸包、点与多边形的位置关系……
还能有啥?
战略上蔑视之,战术上重视之
概述
特点
思考繁琐
编程繁琐
细节繁琐
如何把握
需要在平时将计算几何的相关子问题透彻研究
模板的代码一定要规范
赛场上重点想思路,不能将时间花在纠缠细节上
(否则finish egg)
第一个问题:判断线段是否相交
预备知识
如何表示线段
直线方程
向量的表示
向量的叉积
方法
解析方法与叉积判断法
规范相交与非规范相交
基本元素
点与直线(解析几何是计算几何的基础!)
点到直线距离(扩展:平行线间距离)
直线平移
角
夹角:点积、余弦定理
极角:叉积、讨论
圆
两圆位置关系(外离、外切、相交、内切、内含、
同心)
第二个问题:点与多边形的位置
关系
预备知识
多边形
表示:是否按顺序,是何顺序
凸多边形
一般多边形
是否可自交?
点与多边形的位置分类
形上、形内、行外
扩展:点与凸多边形的位置关系
问题
多边形严格限制为m条边的凸多边形
n个点,给出各自的判断
凸多边形特性:左链、右链
二分法
复杂度O(nlogm)
第三个问题:凸包
计算几何经典问题
为何求凸包的下界是O(nlogn)?
凸包相关问题
点与凸包位置关系(见问题二扩展)
面积问题
凸包与直线的最远点
凸包与凸包的交
凸包与其他算法(e.g.动态规划)
……
第四个问题:半平面的交
这是一个困难的问题
O(n2)的解法
O(nlogn)的解法
例题
给定n个黑色点,m个白色点。
判断黑色点集与白色点集的位置关系。
Case1: 可以用一条直线将二者分离
Case2: 黑色凸包与白色凸包相交且不包含
Case3: 黑色凸包包含于白色凸包
Case4: 白色凸包包含于黑色凸包
练习题
1113
1271
3521
1066
2069
3502
THE END
Thanks for your attention!