第十一章 计算几何问题

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
q p p q
o (a)
o (b)
图 11.4
左转的三角区域(a)和右转的三角区域(b)
11.1 引言
三、几何扫描 1、几何扫描 对物体进行扫描,以便确定物体的几何形状、识别物体 中各个部件的几何特征及部件之间的联系。 2、平面几何扫描
在二维平面上,对某一个对象从左到右用垂直线进行扫
描。
11.1 引言

x1 y2 x2 y3 x3 y1 y1 x2 y2 x3 y3 x1
11.1 引言
上述 opoq 的有向面积,也可用下面的行列式的值来确定:
x1 D x2 x3
y1 1 y2 1 x1 y2 x2 y3 x3 y1 y1 x2 y2 x3 y3 x1 y3 1
1 i n 1。 如果 p1 pn ,则由 所封闭起来的区域称为多边形 。 pi 称为多边形的顶点;线段 pi pi 1 称为多边形的边。
通常用“多边形”来表示多边形的边界。
11.1 引言
4、简单多边形和非简单的多边形: 除了顶点之外,任何两条边都不会交叉的多边形称为 简单多边形; 有交叉边的多边形称为非简单的多边形。 例:图 11.1(a)是简单的多边形,图 11.1(b)是非简单 的多边形。
11.2.1 寻找平面线段交点的思想方法
二、算法的思想方法:假定不会出现三条线段相交于一点 对 n 条线段的 2 n 个端点以 X 坐标的非降顺序排序; 用垂线从左到右扫描所有的线段; 用线段的端点和交点构成事件调度点序列 E ; 把扫描线所扫描到的线段按 x 关系定序, 在扫描线上线段的 x 关系,构成了扫描线的状态, 开始时,扫描线的初始状态为空, 扫描线从左到右扫描时,遇到三种事件调度点:线段的左 端点、右端点、两线段交点。 每遇到一个事件调度点, 就执行下面的一种相应的动作,并刷新扫描线的状态:
11.2.1 寻找平面线段交点的思想方法
3. 扫描到线段l1及l2 的交点的处理: 1)把扫描线状态集 S 中l1与l2 的 x 关系颠倒过来, 2)在交点的右边,如果 S 中存在着l1与l2 的紧邻 l3 及l4 ,使得l3 x l2 ,l1 x l4 ,并且l3 与l2 、l1与l4 有交点,且交点尚未保存到T 中,则 (1)保存它们的交点, (2)把交点按 X 坐标的非降顺序,插入事件 调度点序列 E 中。
2 1 4 a b c 3 5 d e 6 7 f 8 10 9
一、问题 给定平面上 n 条线段的集合 L {l1 , l2 ,, ln },寻找它们的 交点集合。 二、平面上线段的关系描述 定义 11.1 令li 和l j 是平面上任意两条线段, 它们与 X 坐标 为 x 的垂线分别相交于点 pi 与 p j 。若 pi 的Y 坐标值大于
p j 的Y 坐标值,就说li 在 x 高于l j ,记为li x l j 。
l1 l2
l3
l4
a b c x
图 11.5
线段之间的 x 关系
11.2 平面线段的交点问题
11.2.1. 寻找平面线段交点的思想方法
11.2.2. 寻找平面线段交点的实现
11.2.1. 寻找平面线段交点的思想方法
一、寻找平面线段交点的两种方法 1、计算所有的线段的交点,需O ( n2 ) 时间。 2、从左到右扫描所有线段,根据线段的 x 关系, 对扫描到的线段进行定序,排除不可能相交的 线段,只对有可能相交的线段确定它们的交点 位置,可以有效减少计算交点的时间。
如果线段 li 和 l j ,其中有一条、或者两条都不与 X 坐标为 x 的垂线相交,就说这两条线段不存在 x 关系。
11.2 平面线段的交点问题
例:图 11.5 中,有如下关系成立:
l1 a l3 a l4 ,l3 b l1 b l来自百度文库 , l2 c l3
在“站点” a ,扫描线状态为 l1 a l3 a l4 ; 在“站点” b ,扫描线状态为 l3 b l1 b l4 ; 在“站点” c ,扫描线状态为 l2 c l3 。
2 1 4 a b c 3 5 d e 6 7 f 8 10 9
11.2.1 寻找平面线段交点的思想方法
6.端点 5: S {l2 , l1 , l4 , l3 , l5};T { a, b, c }; E { c, a, 6, 7, 8, 9,10 }: 7.交点 c : S {l2 , l1 , l3 , l4 , l5},T { a, b, c, d }; E { a, d , 6, 7, 8, 9,10 }; 8.交点 a : S {l1 , l2 , l3 , l4 , l5};T { a, b, c, d , e};E { d , 6, e, 7, 8, 9,10 }; 9.交点 d : S {l1 , l2 , l3 , l5 , l4},T { a, b, c, d , e}; E { 6, e, 7, 8, 9,10 }; 10.端点 6: S {l1 , l2 , l3 , l5};T { a, b, c, d , e}; E { e, 7, 8, 9,10 };
当 D 为正时, o, p, q, o 构成一个反时针方向的回路,就说路径
o, p, q 是左转的,
当 D 为负时, o, p, q, o 构成一个顺时针方向的回路,就说路径
o, p, q 是右转的, 当 D 0时,这三点在同一直线上。
11.1 引言
例:图 11.4 表示左转的三角区和右转的三角区。
四、平面扫描算法的基本组成部分: 1、事件调度点 p _ schedule 按 X 坐标排序的点序, 由这些点定义了扫描线的 “站 点”位置。 2、扫描线状态, 扫描线的“站点”状态,表示在“站点”位置时,所 处理几何对象的状态。 扫描线状态的描述,取决于所处理的几何对象。
11.2 平面线段的交点问题
把交点保存到交点集T 中, 把交点按 X 坐标的非降顺序,插入事件调度点 序列 E 中;
11.2.1 寻找平面线段交点的思想方法
2、扫描到线段 l 的右端点: 如果 S 中存在与 l 紧邻的线段 l1 及 l 2 ,使得 l1 x l ,l x l 2 ,并且, 如果 l1 与 l 2 有交点,且交点集 T 尚未保存该交点,则: 1)把它们的交点保存到交点集 T 中, 2) 把它们的交点按 X 坐标的非降顺序, 插入事件调度点序列 E 中 3)把线段 l 从 S 中删去。
11.2.1 寻找平面线段交点的思想方法
例 11.1 寻找图 11.6 中五条线段的交点。 10 个端点按 X 坐标的非降顺序,事件调度点序列
E {1, 2, 3, 4, 5, 6, 7, 8, 9,10 }。
用垂线从左到右扫描事件调度点,过程如下:
2 1 4 a b c 3 5 d e 6 7 f 8 10 9
(a)
(b)
图 11.1 简单的多边形(a)和非简单的多边形(b)
11.1 引言
5、凸多边形和非凸多边形 凸多边形:连接多边形任意两个顶点的线段,完全处于多边 形内部, 非凸多边形:连接多边形任意两个顶点的线段,不完全处于 多边形内部 例:图 11.2(a)表示一个凸多边形,图 11.2(b)表示一个非凸 多边形。
的面积,再减去梯形 pacs的面积。
11.1 引言
显然, ac ob x2 , bc oa x1 , cs bq ap y1 y2 。
1 1 1 1 S x2 y2 ( y2 y2 y1 ) x1 x1 y1 ( y1 y1 y2 ) x2 2 2 2 2 x1 y2 x2 y1
y s q(x2,y2)
p(x1,y1)
o
b
a
c
x
图 11.3 由两个向量所构成的平行四边形
11.1 引言
3、左转的三角区和右转的三角区
o , p , q 三点的坐标分别为 ( x1 , y1 ) , ( x2 , y2 ) , ( x3 , y3 ) ,
op ( x2 x1 , y2 y1 ) ,oq ( x3 x1 , y3 y1 )。 op oq ( x2 x1 ) ( y3 y1 ) ( x3 x1 ) ( y2 y1 )
2 1 4 a b c 3 5 d e 6 7 f 8 10 9
11.2.1 寻找平面线段交点的思想方法
1. 端点 1: S {l1};T ; E { 2, 3, 4, 5, 6, 7, 8, 9,10 }; 2. 端点 2: S {l2 , l1}; T { a }; E {3, 4, 5, a, 6, 7, 8, 9,10 }; 3. 端点 3: S {l2 , l1 , l3};T { a }; E { 4, 5, a, 6, 7, 8, 9,10}
(a)
(b)
图 11.2 凸多边形(a)和非凸多边形(b)
11.1 引言
二、有向面积 1、以源点作为始点的两个向量的有向面积 点 p ( x1 , y1 ) , q ( x2 , y2 ) 是以源点 o ( 0 , 0 ) 作为始 点的两个向量 op 及 oq 的端点, 则向量 op 及 oq 的 有向面积为: op oq
11.2.1 寻找平面线段交点的思想方法
1.扫描到线段l 的左端点的处理: 1)把线段 l 按照 x 关系的顺序,插入到当前扫描 线状态集 S 中, 2)若 S 中存在与l 紧邻的线段l1以及(或者)l2 ,使 得l1 x l ,l x l2 ,且若l 与l1,以及(或者)l 与
l2 有交点,则:
图 11.6
寻找线段交点的过程
11.2.1 寻找平面线段交点的思想方法
1. 端点 1: S {l1};T ; E { 2, 3, 4, 5, 6, 7, 8, 9,10 }; 2. 端点 2: S {l2 , l1}; T { a }; E {3, 4, 5, a, 6, 7, 8, 9,10 }; 3. 端点 3: S {l2 , l1 , l3};T { a }; E { 4, 5, a, 6, 7, 8, 9,10} 4. 端点 4: S {l2 , l4 , l1 , l3};T { a, b }, E {b, 5, a, 6, 7, 8, 9,10}; 5. 交点b : S {l2 , l1 , l4 , l3};T { a, b, c };E {5, c, a, 6, 7, 8, 9,10};
第十一章 计算几何问题
11.1 引言
11.2 平面线段的交点问题
11.3 凸壳问题 11.4 平面点集的直径问题
11.1 引言
一、点、线段、多边形 1、点: 用数偶 ( x, y ) 表示点 p 的坐标。 2、线段: 由它的两个端点表示。 如果 p ( x1 , y1 ) , q ( x2 , y2 ) 是两个离散的点,端点为 p 和 q 的线段, 表示为 pq 。 3、多边形: 多边形路径 是点 p1 , p2 ,, pn 的一个序列,其中, pi pi 1 是线段,
x1 y1
x2 y2
x1 y2 x2 y1 oq op
11.1 引言
2、两向量有向面积的平行四边形表示 若过点 p 平行于 oq 的直线与过点 q 平行于 op 的直 线相交于 s , p,q,s 的垂线与 X 轴分别相交于
a , b , c ,平行四边形 opsq的面积 S 为: obq 的面积加上梯形 qbcs 的面积, 减去 opa
T { a, b },E {b, 5, a, 6, 7, 8, 9,10}; 4. 端点 4: S {l2 , l4 , l1 , l3}; T { a, b, c }; E {5, c, a, 6, 7, 8, 9,10}; 5. 交点b : S {l2 , l1 , l4 , l3};
相关文档
最新文档