计算几何专题

Download Report

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!