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!