Introduction

课程介绍

什么是计算几何?
计算几何是一门算法设计课程
用几何的方法来设计算法解决问题(问题图形化)

Look up the nearest public phone

CG-Introduction
上图所划分中,各个区域到自己区域内的电话亭的距离最近。
是一个voronoi图

Short Connection

CG-Introduction
找出图中两个点之间的最短路径(避开障碍物),可应用于机器人的运动规划问题

Overlaying maps

将两张地图的信息结合起来
Overlaying maps是地理信息系统的基本操作之一。涉及到在地图中定位对象位置,计算交集等。

计算结合的各个应用领域

Robotics
Computer graphics
CAD/CAM
Geographic information systems
Internet
Virtual reality
Virtual surgery

1.1 an example:Convex Hulls

Concept of Convex

CG-Introduction
平面的子集S被称为凸,当且仅当对于任何一对点p,q∈S时,线段pq完全包含在S中。
集合S的凸包CH(S)是包含S的最小的凸集.更确切地说,它是包含S的所有凸集的交集。
CG-Introduction
凸包的定义
凸包是唯一的凸多边形,满足其顶点是来自P的点并且包含P的所有点。

凸包的计算

如下图所示
CG-Introduction

输入
点集 p1, p2, p3, p4, p5, p6, p7, p8, p9
输出
点集 p4, p5, p8, p2, p9

CG-Introduction
pq构成有向边,如果所有点都位于pq的右侧,则pq是凸包的边。

Algorithm SLOWCONVEXHULL§

CG-Introduction
CG-Introduction
Time complexity of SLOWCONVEXHULL
第1-7步的时间复杂度为O(n3)
第8步的时间复杂度为O(n2)
总的时间负责度为O(n3)

Degenerate case: three points on a line

CG-Introduction
pq是凸包的边 当且仅当 所有的点都位于pq的右侧或者在pq上。

浮点运算可能会引起计算结果的不准确

incremental algorithm(增量式算法)

CG-Introduction
将凸包分为上凸包和下凸包
按照x坐标顺序编号点集p1-pn,
首先将p1和p2 放入上凸包中,接下来逐一考虑p3-pn
如果最新的三个点形成左拐的形式,则删掉第二个点,将第一个点和第三个点连接。以此重复。
计算下凸包的时候,按照p(n-2)-p1的顺序来考虑
如果最新的三个点形成左拐的形式,则删掉第二个点,将第一个点和第三个点连接。以此重复。

Algorithm CONVEXHULL§
CG-Introduction
CG-Introduction

CG-Introduction
共线点必须被视为左转。

Theorem 1.1

The convex hull of a set of n points in the plane can be computed in O(nlogn) time.

1.2 Degeneracies and Robustness

开发几何算法经历了三个阶段

第一阶段
我们试图忽略一切会混淆我们对我们正在处理的几何概念的理解。

第二阶段
调整在第一阶段设计的算法在退化情况下是正确的。

第三阶段
实际实施。
使用整数,有理数甚至代数数字,具体取决于问题的类型

相关文章:

  • 2021-11-29
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-03-03
  • 2022-12-23
  • 2021-06-09
  • 2021-12-18
  • 2021-05-20
  • 2021-11-09
  • 2021-04-29
相关资源
相似解决方案