计算几何经典问题-Feli

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

核定义为一点集,该集合内的点均能看见多边形内 任意一个点 暴力用半平面交O(n2)
射线法,奇数个交点(内),偶数个交点(外) O(n)
先介绍一下Pick公式: a=e/2+i-1 a为多边形(顶点都在格点上)面积,e为多边形边 上的格点数,i为多边形内部的格点数。
平面上给定一点集,将其剖分成一系列三角形,三 角形的顶点只能是点集中的点。且满足最小角最大 分治:O(nlogn) 应用:平面Euclid最小生成树
先求凸包,然后再用旋转卡壳方法求解。 具体做法是枚举三角形的第一个点i,设j = i + 1, k = j + 1。然后做以下操作: 1.计算i,j,k构成的三角形面积a1和i,j,k + 1 构成的三角形面积a2,如果a2 < a1,则进行下一 步,否则k++,重复此步。 k++ 2.记录此时的三角形面积b,如果b < preb(就是 上一个j对应的三角形面积)j++,转第一步,否则 退出。 可以证明这个算法的复杂度为O(n2)。具体实现见 代码。
题目要求统计一个平面图中所有边数为k的面的个数。 枚举每条边,做以下的基本步骤。 基本步骤:以这条边作起始边,不断地找下一条“最左 转”的边,并且标记每个点的访问次数,直到某个点第 3次被访问为止。 经过这个步骤之后,得到一个顶点序列。容易知道,当 且仅当这个顶点序列是2-重复(就是形如12341234 这样),并且是逆时针旋转的,那么就是一个面。 接下去我们就把所有找到的边数为k面进行hash去重, 就得到答案啦。
Feliciawenku.baidu.com@ WHU
给定平面上的一个点集,求其最小外接多边形 算法:Graham扫描 时间复杂度:O(nlogn)
给定空间中一个点集,求其最小外接多面体 算法:增量法 时间复杂度:O(n2)
已知平面上两线段,判断它们是否相交,若相交就 求出它们的交点 算法:判相交-叉积,求交点-联立直线方程组 时间复杂度:O(1)
已知数轴上的一组区间,求它们的并 算法:静态问题-扫描,动态问题-线段树 时间复杂度:静态-O(n),动态O(klogn)
二维向量旋转矩阵 R = [cos(a) –sin(a)] [sin(a) cos(a)] 伸缩矩阵 S = [s 0] [0 s]
两个圆相离 两个圆外切 两个圆内切 两个圆相交 两个圆内含(包括两圆坐标和半径都相同)
追逐式赛跑 具体见刘汝佳书
离散化+暴力O(n2) 离散化+线段树O(nlogn)
平面上有序放置n个圆,问每个圆的可见性 极角离散化O(n3)
已知平面上一点和一多边形 问多边形对点的夹角是多少 区间操作O(n)
给两个多边形,问能否拼成一个凸多边形 我的做法是,枚举第一个多边形的第i条边和第二个 多边形的第j条边重合,然后从这条重合的边开始, 尽可能的向后扩展重合边,然后判断剩下的多边形 是否是凸多边形。
相关文档
最新文档