(HDUACM03版08)计算几何基础7805265PPT课件

合集下载

计算几何PPT

计算几何PPT

β
α- β
α
/
ACM/ICPC集训队 P14
向量的运算
点积 α · β = x1×x2 + y1×y2 = |α|·|β|·cosθ 叉积 α×β = x1×y2 – x2×y1 = |α|·|β|·sinθ
β
θ
α
/
凸包的求法
卷包裹法
/
ACM/ICPC集训队 P39
凸包的求法
Graham-Scan算法
push(p1); push(p2); i = 3; while i <= n do if p1在栈顶边的左手方 向 then push(pi); 并且i++ else pop();
Q1 Q1 P2 P1 Q2 P1 P2
Q2
/
ACM/ICPC集训队 P22
向量的运算的应用
计算点到线段、直线的最近点 求点到直线的距离 求点关于直线的对称点 构造两点中垂线 ……
/
ACM/ICPC集训队 P23
ACM/ICPC集训队 P29
多边形的三角剖分
多边形的三角剖分,就是仅仅使用多边形的对角 线将多边形P拆分成多个不重叠的三角形。 通过三角剖分,我们可以将复杂的多边形转化相 对比较简单的三角形集合。
定理:对于具有n条边的多边形,不论我们使用什 么剖分方法,总是只能解剖出n-2个三角形
/ ACM/ICPC集训队 P30
/
ACM/ICPC集训队 P18
判断线段和直线是否相交
取直线上一点,连接线段的两点,如果所得的两系线段都在直线的同 一侧,则不相交。
/
ACM/ICPC集训队 P19
判断两线段是否相交
两条线段恰有惟一一个不是端点的公共点,称之 为“规范相交”。 否则称为非规范相交。

北京大学ACM暑期课讲义-计算几何教程

北京大学ACM暑期课讲义-计算几何教程
Computational Geometry
计算几何教程
计算几何的恶心之处
代码长,难写。
需要讨论各种边界情况。后面所介绍的算
法,有些对于边界情况的处理很完美,不 需要再做讨论;有些则不然,需要自行处 理边界情况。
精度误差

二维矢量
2-Dimension Vector
矢量
既有大小又有方向的量。
算法演示
2 被弹出栈,3 进栈。
算法演示
没有点被弹出栈,4 进栈。
算法演示
4 被弹出栈,5 进栈。
算法演示
5 被弹出栈,6 进栈。
算法演示
6 被弹出栈,7 进栈。
算法演示
如此直到下凸壳被找到。
算法演示
倒序进行扫描找到上凸壳。
Graham 扫描的时间复杂度
这太傻缺了。算法的瓶颈在排序,所以时
总时间复杂度 O(N2 log N)。
算法扩展
SPOJ CIRUT
求恰好被覆盖 1 次、2 次、„、N 次的面积。
算法的本质在于对“裸露”部分进行处理。
这种方法也可以用于求很多圆与很多凸多 边形的面积并——但是情况复杂得多,要 讨论的情况也多得多。
三维矢量
3-Dimension Vector
总体来说讨论比较辛苦,写起来不算很难。
精度存在比较大的问题,而且半平面交的
题目一般都容许 O(N2) 算法,所以并不是 很常用。
半平面交练习题
POJ 1279 POJ 3525 POJ 2451 POJ 3384
求多边形的核。核中的点满足其到多边形边 界上任一点之间的线段只与多边形在那一点相交。 求凸多边形最大内切圆半径。 裸的半平面交。朱泽园专门为他的算法出的 题,要求 O(N log N) 算法。 求在凸多边形内部放两个半径为 r 的圆所能 覆盖的最大面积。两圆可以重叠,但不能与多边形相交。 需要用到旋转卡壳。

265理论力学CAI数学基础精品文档PPT课件

265理论力学CAI数学基础精品文档PPT课件
A BB A
ABTATBT
2020/11/28 11
理论力学CAI 数学基础
矩阵/定义与运算/常见的运算
• 矩阵乘
元素间的关系
C AB
mn ms sn
CCij mn A A ik m s,B B ks j n s
Cij Aik Bkj (i=1, ,m; j=1, ,n) k 1
A21
A12 A22
A1n A2n
Am1 Am2 Amn
• 用一黑斜体的大写字母来表示
– 无法区分黑白时可加下横线 A
2020/11/28 6
理论力学CAI 数学基础
矩阵/定义与运算/定义
• 矩阵A的转置矩阵,记为AT
A11
def
A Aij
mn
def
A21
A12
A22
A1n A2n
Aii= 0 (i=1,,n)
AAT

1 3 2
A 3 4 6

A
3 1
4 2
B10
0 1
32
AB 31
2410
0 1
3231
4 2
148
22
23
2020/11/28 理论力学CAI 数学基础
3 1 1 1 4 2 0 0 3 1 0 0 4 2 (( 1 1 )) 3 1 2 2 4 2 3 3
23

A
3 1
4 2
C 31
4 2
00
? CA
2020/11/28 9
理论力学CAI 数学基础
矩阵/定义与运算/常见的运算
• 矩阵与标量乘 CA mn mn
元素间的关系 Cij Aij (i=1, ,m; j=1, ,n)

计算几何优质获奖课件

计算几何优质获奖课件
0<=a<360,也能够以为是两向量旳夹角,0<=a<=180。一般用于求夹角,a = acos( (AB * CD) / (|AB| * |CD|) )。也可:|CD| * cos(a) = AB * CD / |AB|,即向 量CD在AB上旳投影。
叉积,线段相交旳鉴定
四、叉积。
叉积旳成果为一种向量。
P1
A1 P2
P6 A4
P5 A3
A2 P4
2024/9/21
P3
14
凹多边形旳面积?
依然分割成三角形 计算措施不变
注意符号,最终取绝对值
2024/9/21
15
任意点为扇心旳三角形剖分:
我们能把多边形提成N-2个三角形,为何不能提成N个三角形呢? 例如,以多边形内部旳一种点为扇心,就能够把多边形剖提成 N个三角
12
计算几何旳措施:
在计算几何里,我们懂得,△ABC旳面积就是“向量AB”和“向量 AC”两个向量叉积旳绝对值旳二分之一。其正负表达三角形顶点 是在右手系还是左手系。
B
C
A ABC成左手系,负面积
2024/9/21
C B
A ABC成右手系,正面积 13
凸多边形旳三角形剖分
很自然地,我们会想到以 P1为扇面中心,连接P1Pi就得到N-2个三角形,因为凸性,确保这 些三角形全在多边形内,那么,这个凸多边形旳有向面积: A=sigma(Ai) (i=1…N-2)
2、A在线段CD上旳充要条件:
a) 。
AC×AD = 0,几何意义,AC和AD构成旳平行四边形旳面积为0,即A、C、D三点共线
b)
A点在CD之间,A.x处于C.x和D.x之间而且A.y处于C.y和D.y之间

第7讲计算几何基础和实例分析精品PPT课件

第7讲计算几何基础和实例分析精品PPT课件
当Q1Q2跨立P1P2时 (Q1-P1)*(P2-P1)*(P2-P1)*(Q2-P1)>=0
矢量
应用示例分析
在平面直角坐标系中,任意给出四个点的坐标值,前 两组和后两组分别确定两条直线。请判断两条直线的 关系:
① 若是同一条线,输出“LINE” ② 若两条直线平行,输出“NONE” ③ 若两条直线相交,输出交点坐标 输入格式:第一行一个数据n表示输入数据的组数 ,以后n行(每行8个数据)表示两条直线的数据 输出格式:对每组输入给出对应输出 [提示:] 用两点式推出直线方程 考虑两点式确定的直线不一定有斜率,所以使
两线段的端点)
③线段和多边形交于线段的两端点并不会影 响线段是否在多边形内;但是如果多边形的 某个顶点和线段相交,还必须判断两相邻交 点之间的线段是否包含于多边形内部。
包含关系
判断图形是否包含在多边形中
判断线段是否在多边形中的基本思想 求出所有和线段相交的多边形的顶点 按照X-Y坐标排序(X坐标小的排在前面,对于X坐标相 同的点,Y坐标小的排在前面,这种排序准则也是为了 保证水平和垂直情况的判断正确) 排序后,相邻的两个点就是在线段上相邻的两交点, 如果任意相邻两点的中点也在多边形内,则该线段一 定在多边形内。
矢量
矢量的运算——叉积的应用(判断两线段是否相交)
通过快速排斥测试和快速跨立测试进行判断 快速排斥测试 设以线段P1P2位对角线的矩形为R,以线段Q1Q2为对角线的矩 形为T,如果R和T不相交,则两线段不会相交。 快速跨立测试 若两线段相交,则必然相互跨立对方。
当P1P2跨立Q1Q2时 (P1-Q1)*(Q2-Q1)*(Q2-Q1)*(P2-Q1)>=0
矢量的运算——叉积的应用(判断点是否在线段上)

计算几何课件

计算几何课件

• 向量形式与解析形式的关系

− , − , − ⋅ , , = 0 ⟹ + + + = 0
• Dist =
− ⋅

=
+++
2 + 2 + 2
• 性质:参数表示与隐式表示;自动适用于二维
2024/3/11
• 是直线/射线上一点, 是直线/射线的方向向量


• 线段: = 1 + 2 − 1 = 1 − 1 + 2 , ∈ 0,1
• 1 , 2 分别是线段的两个端点
2024/3/11
1
Computational Geometry
2
5
点、线、面的表示
1
• 面的表示
计算几何
Computational Geometry
主讲人:x
2024 年 3 月 18 日
什么是计算几何
2024/3/11
Computational Geometry
2
什么是计算几何
• 计算几何:✗数学 ✓计算机
• 起源于 1971 年,计算机图形学 (CG) 与计算机辅助设计 (CAD) 的推动
• = + = +
2024/3/11
• =
• ≥ 0, Dist = ℎ
• 点在直线上的投影
• ⋅+
• 点 ;直线 = +

− ⋅

2

Computational Geometry


7
线与线的位置关系 (2D)
• 共端点射线/线段的绕序

acm计算几何_讲义

acm计算几何_讲义

PKU 3304 segments

Output

For each test case, your program must output "Yes!", if a line with desired property exists and must output "No!" otherwise. You must assume that two floating point numbers a and b are equal if |a - b| < 10-8.
PKU 3304 segments

Description
ห้องสมุดไป่ตู้
Given n segments in the two dimensional space, write a program, which determines if there exists a line such that after projecting these segments on it, all projected segments have at least one point in common.

You are to find the length of the shortest path through a chamber containing obstructing walls. The chamber will always have sides at x = 0, x = 10, y = 0, and y = 10. The initial and final points of the path are always (0, 5) and (10, 5). There will also be from 0 to 18 vertical walls inside the chamber, each with two doorways. The figure below illustrates such a chamber and also shows the path of minimal length.

ACM算法 计算几何基础ppt课件

ACM算法 计算几何基础ppt课件

57 2020/4/15
58 2020/4/15
59 2020/4/15
60 2020/4/15
61 2020/4/15
62 2020/4/15
63 2020/4/15
64 2020/4/15
特别提醒:
以上介绍的线段的三个属性, 是计算几何的基础,在很多方 面都有应用,比如求凸包等等, 请务必掌握!
15 2020/4/15
第二单元
多边形面积 和重心
16 2020/4/15
基本问题(1):
给定一个简单多边形,求其 面积。
输入:多边形(顶点按逆时 针顺序排列)
输出:面积S
17 2020/4/15
A=sigma(Ai) (i=1…N-2)
P1
A1 P2
P6 A4
P5 A3
A2 P4
P3
25 2020/4/15
凹多边形的面积?
P3
P2 P4
P1
26 2020/4/15
依然成立!!!
多边形面积公式:A=sigma(Ai) (i=1…N-2)
结论: “有向面积”A比“面积”S其实更本
质!
27 2020/4/15
思考如下图形:
18 2020/4/15
Any good idea?
19 2020/4/15
先讨论最简单的多边形——三角形
20 2020/4/15
三角形的面积:
在解析几何里, △ABC的面积可以通过 如下方法求得:
点坐标 => 边长 => 海伦公式 => 面积
21 2020/4/15
思考:此方法的缺点:
C=sigma((↑Pi +↑Pi+1)(↑Pi ×↑Pi+1) ) /(6A)

算法设计实例教程 第8章 计算几何基础

算法设计实例教程 第8章 计算几何基础
} 以点O为起点、A为端点作向量a,以点为起点、B为端点作向 量b,则以点O为起点、P为端点的向量称为a与b的和a+b,如 下左图。
8 计算几何基础
8.1.2 向量的运算
• 1.向量的加减法 • 减法
a (x1,y1)
b (x 2,y 2 )
a b (x1 x2,y1 y 2)
从A点作AB,则以B为起点、A为端点的向量称为a与b的差a-b,如下右图。。
8 计算几何基础
8.1.2 向量的运算
• 4.向量的向量积(叉积)
• 向量积的一般含义:两个向量a和b的向量积是一个向量,记作a×b,其模等于由a和b作成的平行四 边形的面积,方向与平行四边形所在平面垂直,当站在这个方向观察时,a逆时针转过一个小于π的 角到达b的方向。这个方向也可以用物理上的右手定则判断:右手四指弯向由A转到B的方向(转过的 角小于π),拇指指向的就是向量积的方向。
P A
a
a+b
O
bB
O
图8-3向量的加法和减法
Vector operator - (Point A,Point B) {
return Vector(A.x-B.x,A.y-B.y); }B来自ba-ba
A
8 计算几何基础
8.1.2 向量的运算
• 2.向量的分解
• 定理:如果空间三个向量a,b,c不共面,那么对任 一向量p,一定存在一个且仅一个有序实数组 x,y,z,使得:p=xa+yb+zc。含义与物理上的合 力和力的分解一样。
8 计算几何基础
8.1几何基础概念
8.1.1 点、直线、线段和向量 • 点:在二维平面中点用坐标(x,y)表示。 • 直线:是一个点在平面或空间沿着一定方向和其相反方向运动的

计算几何课件知识讲解

计算几何课件知识讲解
枚举三角形三个顶点,用叉积判断其他点是 否在三角形内
POJ 1292
平面上有一些墙,人可以在墙上走,也可以 在两堵墙间架木板走到另一堵墙上,求从起 点到终点至少要带多长的木板
主要问题在于求两条线段的距离:若相交则 为0,否则可转化为点到线段的距离
POJ 3944
空间内有一些可反射光线的球,现从某一点 向某一方向射出一束光,求光线与球的最后
若共面,问题转化为二维:分两种情况考虑: 一个三角形的顶点在另一个三角形内(利 用叉积) 一个三角形的边与另一个三角形的边相交 (利用线与线的交点)
先判断是否有唯一解(不平行),再利用叉 积求解
CPoint intersect(CLine l, CLine m, string msg) {
double x = area(m.a – l.a, l.b – l.a);
double y = area(l.b – l.a, m.b – l.a);
if (isZero(x + y)) {
}
CVector operator -(CVector p, CVector q) { return CVector(p.x - q.x, p.y - q.y, p.z - q.z);
}
CVector operator *(double k, CVector p) { return CVector(k * p.x, k * p.y, k * p.z);
CVector n = normal(s);
double x = project(l.b – l.a, n);
if (isZero(x)) {
if (isZero(dist(l.a, s))) msg = “共面n”;
else msg = “平行”;

《计算机数学基础》教学课件 3-计算机数学基础

《计算机数学基础》教学课件 3-计算机数学基础

为凸时,其切线斜率 是单调减少的,
线 的 凹
因而
;当曲线为凹时,其切线斜率 是单调增加的,因而
.这说明曲线
的凹凸性可由函数 的二阶导数的符号确定.这就是曲线凹凸性的判定定理.



定理 1 设 在 上连续,在 内存在二阶导数 ,则

(1)若在 内,
,则曲线
在 上是凹的;

(2)若在 内,
,则曲线
在 上是凸的.
对于当
(或
)时,未定式 同样有对应的洛必达法则,定理如
下.

定理 2 设
必 达
(1)当
时,函数 与 都趋于 ;

(2)当
时, 与 都存在且


(3)
存在(或为无穷大),
那么

第3章 导数的应用
第 10 页
例6


解 原式

3.1
洛 必
其他有一些 型, 型等未定式也可通过 或 型的未定式来计算.下面举例说明.
数 称为最大值(最小值),最大值和最小值统称为最值.
显然,最值点只可能出现在驻点、不可导点和区间 的端点.因此,只需要求出这三类
点的函数值加以比较即可.
例6
求出函数
在 上的最值.
解 求导得


,得
.计算得,

比较得,函数的最大值为
,最小值为

过渡页
第 21 页
3.3 曲线的凹凸性与拐点
第3章 导数的应用

,函数单调减少. ,函数单调增加.
例2
判定函数
在 上的单调性.
解 因为在 内有

第六章计算几何学.ppt

第六章计算几何学.ppt

• 设二维矢量P = ( x1, y1 ),Q = ( x2 , y2 ) 。矢量加法定义为: P + Q = ( x1 + x2 , y1 + y2 )。矢量加法的几何意义是以向量 P、Q为邻边的平行四边形的对角线
Q
P+Q Q
P O
图8-2 两个矢量
P
O
图8-3 矢量加法的几何意义
矢量减法定义为: P − Q = ( x1 − x2 , y1 − y2 )
int inside_polygon(point p,int n,point *pt){ //设多边形有n个顶点,pt是顶点数组
point p1; int i=0,count; while (i<n){ //随机取一个足够远的点p1
p1.x=rand()+offset,p1.y=rand()+offset; //以p为始点、p1为终点作射线L;
return (fabs(area)-OnEdge(n,p))/2+1; }
6.2 基本算法
1.判断线段和直线是否相交 2.判断矩形是否包含点 3.判断线段、折线、多边形是否在矩形中 4.判断矩形M1是否在矩形M2中 5.判断圆是否在矩形中 6.判断点是否在多边形中 7.判断线段是否在多边形内 8.判断折线是否在多边形内 9.判断多边形是否在多边形内 10.判断矩形是否在多边形内 11.判断圆是否在多边形内 12.判断点是否在圆内 13.判断线段、折线、矩形、多边形是否在圆内 14.判断圆是否在圆内
=0 O、A、B共线
<0 OB在OA的顺时针方向 叉积符合右手法则(通过正负号,判断两矢量的顺逆关系)
3、任意三点A、B、C组成的向量AB、AC的叉积
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

30.09.2020
15
第二单元
多边形面积和重心
30.09.2020
16
基本问题(1):
给定一个简单多边形,求其面积。 输入:多边形(顶点按逆时针顺
序排列) 输出:面积S
30.09.2020
17
思考如下图形:
30.09.2020
18
Any good idea?
30.09.2020
19
先看最简单的多边形——三角形
8
30.09.2020
9
30.09.2020
10
30.09.2020
11
30.09.2020
12
30.09.2020
13
思考:
1、传统的计算线段相交的方法是什么? 2、传统方法和本方法的区别是什么?
30.09.2020
14
特别提醒:
以上介绍的线段的三个属性,是计 算几何的基础,在很多方面都有应 用,比如求凸包等等,请务必掌握!
剖分成N个三角形,分别求出其重心和面 积,这时可以想象,原来质量均匀分布 在内部区域上,而现在质量仅仅分布在 这N个重心点上(等假变换),这时候就 可以利用刚才的质点系重心公式了。
不过,要稍微改一改,改成加权平均数, 因为质量不是均匀分布的,每个质点代 表其所在三角形,其质量就是该三角形 的面积(有向面积!),——这就是权!
30.09.2020
34
看看一个特例:
30.09.2020
35
原因:
错误的推广公式是“质点系重心公式”, 即如果认为多边形的质量仅分布在其顶 点上,且均匀分布,则这个公式是对的。
但是,现在多边形的质量是均匀分布在 其内部区域上的,也就是说,是与面积 有关的!
30.09.2020
36
Solution:
49
30.09.2020
50
30.09.2020
51
30.09.2020
52
30.09.2020
53
30.09.2020
54
30.09.2020
55
30.09.2020
56
30.09.2020
57
30.09.2020
58
30.09.2020
59
30.09.2020
603Leabharlann .09.2020就是“向量AB”和“向量AC”两个向量叉
积的绝对值的一半。其正负表示三角形
顶点是在右手系还是左手系。
B
C
C
B
A ABC成左手系,负面积
30.09.2020
A ABC成右手系,正面积
23
大功告成:
Area(A,B,C)= 1/2 * (↑AB) × (↑AC)
=∣ ∣/2 Xb – X a Yb –Ya Xc – X a Yc –Y a
61
30.09.2020
62
30.09.2020
63
30.09.2020
64
30.09.2020
65
30.09.2020
66
30.09.2020
( i=1…N )
30.09.2020
29
能否把扇心移到多边形以外呢?
P3 P4
P2 P1
P0
30.09.2020
30
既然内外都可以,为什么不设P0 为坐标原点呢?
P3
P4 P2
P1
现在的公式?
O
30.09.2020
31
简化的公式:
面积问题 搞定!
A= ∣ ∣ sigma
Xi Yi
/2 X(i+1) Y(i+1)
比如,以多边形内部的一个点为扇心,就可以 把多边形剖分成 N个三角形。
P3 P2
P4
P0
P1
P5 P6
30.09.2020
28
前面的三角剖分显然对于多边形内部 任意一点都是合适的!
我们可以得到: A=sigma(Ai) ( i=1…N )
即 A= ∣ ∣/2 Xi–X0
Yi –Y0

sigma X(i+1) – X0 Y(i+1) –Y0
30.09.2020
20
三角形的面积:
在解析几何里, △ABC的面积可以通过 如下方法求得:
点坐标 => 边长 => 海伦公式 => 面积
30.09.2020
21
思考:此方法的缺点:
计算量大 精度损失 更好的方法?
30.09.2020
22
计算几何的方法:
在计算几何里,我们知道,△ABC的面积
A1
P2
A2 P4
30.09.2020
P3
25
凹多边形的面积?
P3
P2 P4
P1
30.09.2020
26
依然成立!!!
多边形面积公式:A=sigma(Ai) (i=1…N-2)
结论: “有向面积”A比“面积”S其实更本
质!
30.09.2020
27
任意点为扇心的三角形剖分:
我们能把多边形分成N-2个三角形,为什么不 能分成N个三角形呢?
ACM
1
今天,

吗?
30.09.2020
2
每周一星(7):
dwj
30.09.2020
3
第八讲
计算几何初步
(Computational Geometry Basic)
30.09.2020
4
第一单元
线段属性
30.09.2020
5
30.09.2020
6
30.09.2020
7
30.09.2020
30.09.2020
37
公式:
C=sigma(Ai * Ci) / A (i=1…N) Ci=Centroid(△ O Pi Pi+1)
= (O + ↑Pi +↑Pi+1 )/3
C=sigma((↑Pi +↑Pi+1)(↑Pi ×↑Pi+1) ) /(6A)
30.09.2020
38
全部搞 定!
39
第三单元
凸包( Convex Hull )
30.09.2020
40
30.09.2020
41
30.09.2020
42
30.09.2020
43
30.09.2020
44
30.09.2020
45
30.09.2020
46
30.09.2020
47
30.09.2020
48
30.09.2020
特别注意: 以上得到是有向面积(有正负)!
30.09.2020
24
凸多边形的三角形剖分
很自然地,我们会想到以 P1为扇面中心, 连接P1Pi就得到N-2个三角形,由于凸性, 保证这些三角形全在多边形内,那么, 这个凸多边形的有向面积:
A=sigma(Ai) (i=1…N-2)
P6
P1
A4
P5
A3
( i=1…N )
30.09.2020
32
基本问题(2):
给定一个简单多边形,求其重心。 输入:多边形(顶点按逆时针顺
序排列) 输出:重心点C
30.09.2020
33
从三角形的重心谈起:
三角形的重心是: (x1+x2+x3) / 3,(y1+y2+y3) / 3 可以推广否?
Sigma(xi)/N , sigma(yi)/N (i=1…N) ???
相关文档
最新文档