bézier曲线的细分技术毕业论文外文翻译详解

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

杭州电子科技大学
毕业设计(论文)外文文献翻译
毕业设计(论文)题目Bézier曲线的细分技术
翻译(1)题目Bézier曲线的交集的完整细分算法
翻译(2)题目轮廓平滑算法基于Bézier曲线的应用学院计算机学院
专业计算机科学与技术
姓名郭佳远
班级09052314
学号09051412
指导教师余正生
译文一:
Bézier曲线的交集的完整细分算法1
Chee K. Yap
摘要:我们给第一个完整的细分算法可能与切线相交的两个Bézier曲线F,G,交叉点。

我们强大的细分方法算法是基于几何分离的界限,它们使用同一个标准的,用于检测非交叉交点曲线。

我们的算法是自适应的,仅根据精确的长浮点数计算。

特别是,我们避免操纵代数数字和合成计算。

它被设计成与现有的算法竞争哪个是“好”的选择。

所有的标准算法假定F,G是互质的- 我们的算法需要推广这一点。

关键词:计算几何,曲线相交,Bézier曲线,,细分方法,有效的数值算法,精确的
几何计算。

1 介绍
代数曲线和曲面的交叉分析在许多几何模型领域是一个根本性的问题[16]。

最实用的算法是基于自由曲面的曲线和曲面[8,6]。

在本文中,我们考虑一类自由曲线,
Bézier曲线。

目前所有的交叉贝塞尔曲线算法是不准确的,主要的就是不稳定的问题。

让我们看看一个根本原因。

一条曲线F是一个有限的曲线段,代表序列P(F)=(P0,...,PM)的控制点[8,6]。

让CH(F)表示P(F)中,作为观察的凸包封闭区域。

一对(F,G)贝塞尔曲线被称为候选对CH(F)∩CH(G)的非空。

标准贝塞尔曲线相交算法是基于两个曲线的
想法。

首先,使用属性,包含一条曲线F在CH(F),该算法可以丢弃非候选对。

其次,算法的操作主要是细分,曲线F分割成两个代替曲线F0,F1采用De Casteljau的算法。

通用交叉算法候选对维护一个队列Q。

只要Q为非空,从Q中提取候选人对(F,G)。

如果F∪G的直径小于ε,则输出该对;否则它细分曲线具有较大的直径,来讨
论F,把他分成代替曲线F0,F1,并在Q上附加(F0,G)和(F1,G)。

该算法依赖于一个常数ε> 0:(F,G)对的直径小于ε被视为相交。

为显示的目的,这样的常量是合理的。

但对于拓扑分析的曲线的安排,我们希望输出(F,G)对代表的独特交集。

但通用的算法,输出一对(F,G)没有交集,或有多个交点。

让p是F和G的一个交点。

在标准假设,F,G有没有共同的组件,然后,p是F∩G的一个孤立的点。

在P点的交集可以是切向或横向。

这取决于F和G在p点的切线是否或重合。

另外,我们可以根据曲线是否彼此交叉的在p或没有,把P作为一个交叉或不相交叉的交点;这相当于交叉点p的重数是奇数还是偶数。

不相交的交点,必须相切的,横向交叉点必须是横切的。

因此我们有3个可能性,如图1所示。

1
Chee K. Yap SCG 06Proceedings of the twenty-second annual symposium on Computational geometry Pages 217 - 226
(a)横向的(交叉)(b)切向的(交叉)
(C) 切线(不相交)
图1:交点:(a)横向(b)切向(c)切线
可以避免使用ε吗?这似乎也合情合理,如果F和G只有交叉的交点,那么我们可以设计一个不使用任何ε来限制基于细分交叉算法。

这不是显而易见,但它是隐含了本文交集算法。

在任何情况下,关键的问题是如何检测非交叉的交点。

最近,沃
伯特[23,22],解决了非奇异代数曲线的问题。

这类曲线,她的地址和本文中提到的
那些不具有直接可比性,虽然Bézier曲线是比较特殊的代数曲线,它们可以是单数(参见图5)。

她介绍广义Jacobi曲线的技术来检测不相交非奇异的曲线的交点。

她还使
用细分的空间,以避免操纵代数数字(不同于传统方法的基础上圆柱分解)。

但她的做法仍然使用有效的代数工具,如生成物和根隔离。

这样代数技术在其他部分的算法是花费很大的和减少的有效性的适应性的。

一个最近的一篇论文中,Seidel和沃伯特[20]地址计算平面代数曲线的拓扑安排的;再次,细分和代数方法相结合的被使用。

相比之下,我们使用仅有的代数的信息是代数的零界。

否则,我们使用长浮点数和原始的几何操作进行纯数字计算,如计算凸壳并相交的用一条线的曲线。

这不是明显的先验我们可以只用这样的操作实现我们精确的曲线相交的目标。

比如,一个在沃伯特- 赛德尔设定中是不知道纯粹的自适应/数值版本。

前的细分算法采用各种用于检测的交点的标准。

这些部分都是典型的标准:要么拒绝标准,确认非交叉或验收标准,确认交点。

一个完整的标准是,既接受和排斥的
标准。

上面的泛型算法仅使用凸壳准则。

由于这是一个拒绝的标准,通用的算法也从来没有肯定的交点。

Sederberg和Meyers[19]根据矢端曲线肯定存在的横向交叉点给出了验收标准。

但是没有任何已知的验收不交叉的交点的标准,我们将在第3节提供一个。

在一般情况下,部分的标准是有数字滤波器组成的概念几何模拟[5]。

部分标
准作为一个启发式的快速拒绝/接受是非常有用的。

但最终,一个正确的算法必须使
用一些完整的标准或其他一些全球保证其完整性。

我们的方法概述。

1。

最根本的动机这项工作是为Bézier交点设计一个确切的细分算法。

细分意味着适应性。

形成鲜明对比的方法,结合代数用数值的方法[22、23、20],我们是“完全自适应”。

2。

我们介绍的是主要的分析工具几何分离的范围内。

他们回答这样的问题:如
果它们不相交,什么是最接近的两个曲线段之间的距离?或如果q是不在曲线上的之间的最近距离是什么点q和曲线?这些界限,表示为功能度和高度的的相关多项式和
代数数,表示通过各种Δ在本文中。

请参阅第2和第7。

3。

Δ发展提供停止准则数值模拟和细分的程序。

的边界很容易该算法开始时计
算。

的逻辑中算法是无视这些Δ值。

因此,如果提高Δ边界是可预见的未来,他们
可以直接掺入而不改变算法逻辑。

4。

适应性是指这些Δ界限仅在最坏的情况下被调用。

“好的输入”,一个迭代终止很久以前绑定的迭代是到达。

这种提前终止依赖于半标准(即,滤波器)用于确定
相交或不相交。

为简单起见,我们描述我们的算法只使用凸船体过滤器(第1节)。

虽然过滤器没有被强调在本文中,它们会影响我们的基本设计算法。

我们预计,大多数过滤器可以很容易地注册成立到我们的算法有轻微的变化。

5。

第3条规定的第一个完整的检测标准非交叉路口(NIC)的基本贝塞尔曲线。

由一个“基本曲线”,我们指的是一个曲线图凸部或凹函数。

6。

我们的算法使用各种数值和几何近似的子程序。

两个关键的子程序交叉的初
等贝塞尔曲线用直线(第4部分)和用于评估的“α函数”的迹象(第5部分)。

7。

Δ界需要小心应用程序(它不只是一个问题的取代一些开往εΔ通用交叉算法)。

同样地,该应用程序的不相交的交点标准(NIC)需要准备:在第6章中,我们描述了耦合过程中创建申请NIC的必要前提。

8。

非基本贝塞尔曲线呢?一般的贝塞尔曲线的临界点,基本的曲线没有关键点。

有一般方法,打破了代数曲线的关键点(例如,[14])。

这些涉及代数,非自适应的
方法,我们希望避免的。

相反,第7显示了如何细分与分离边界可以检测和隔离等关
键点。

第8提出了整体的交叉算法。

9。

我们所有的数值计算,最终降低环操作(+,- ,×)(二进制)长浮点数,即理性号码的形式N2M其中n和m∈Z,这些操作进行准确。

为了提高效率,我们
不操纵代数甚至是一般合理的数字。

我们也不会操纵多项式或执行在当前子结式的计算,如被发现确切的交集算法。

10。

要强调长浮点数在我们的表达法中的作用,它介绍了以下术语是非常有用的。

首先,定义的“标准参数化”点,线和贝塞尔曲线如下:一个点p的坐标由下式给出P =(X,Y),一条线L它是由给定系数的方程AX + BY + C确定,一条贝塞尔曲线是
由给出的控制点(依次给出的坐标)确定。

当这样的标准长浮点数参数
X ,Y ,A ,B ,C 等,我们称他们为直接对象,否则他们是间接对象。

例如,相交的
“直通线”和“直接曲线”F产生的坐标是代数数点
P *。

因此P*间接对象。

然后,我们必须提供的替代方法通过直接代表(近似)间接物体对象。

我们在直接对象的上面使用
“表达式”。

例如,如果p 是L 和F 的唯一的交集,我们可能会用“点[L ,F]”表示p*。

因此,L ,F 作为P *的非标准参数的直接对象。

这表示可以精确如下:使用
De Casteljau 的算法的通用算法,把曲线F 细分为两个代替曲线(F0,F1)。

检查L 和F0是否相交(第4节),如果是这样,精致的表示是点[L ,F0],否则它是点[L ,F1]。

这个过程可以重
复,当每次我们经常想得到越来越近似的P*。

间接对象的近似计算与一定迭代,通过适当的停止条件Δ发展。

举例说明,假
设我们希望测试是否P*=点[L ,F]坐落在一个标准的贝塞尔曲线
G 上。

假设我们可以计算一定范围内Δ> 0,如果p*不在G 上,那么它的距离G 至少是Δ(第2部分)。

然后,我们细化点[L ,F]如上文所述,直到直径(F )<Δ/ 2。

接下来,我们多次使用De Casteljau 的算法细分G 得到代替曲线j G (j=0,1,...)。

当)()(F CH G CH j 是空集时,我们丢弃j G ;当直径j G <
2/时我们也将停止细分j G 最后,我们的结论P 在G 上,当且仅当凸包CH (F ),CH (GJ )对于一些j 相交。

此程序的正确性是不难看出。

11。

附录中包含所有被忽略的证明。

我们的全论文可从/cs/faculty/yap/papers/看到。

相关工作。

曲线和曲面的代数计算文献是非常大的和多样的。

我们可能会粗略地划分为两个不同的计算方法:(一)代数的观点对待曲线和表面作为系统的代数方程来解决的,通常使用符号或代数技术。

这种“代数算法“是准确的,并且(或可以完成)完整的。

(二)几何的角度更喜欢曲线和曲面的参数形式,利用数值通常解决技术,例如同伦或细分。

这样的“几何算法”往往不完整但广泛在实践中使用。

在过去的20年里代数的观点已经发生了令人印象深刻的进步
[3]。

然而,许多代数算法不考虑实用。

曲线和应用程序中的表面通常有界子集(“修补程序”)的代数集。

几何算法直
接操作这些补丁;代数算法把完整的代数套,往往被认为是束缚。

这个事实可以减少算法的代数适用性。

要指定补丁的代数集,可以用半代数的公式(即不等式)。

但它是不容易,指定一个特定的分支曲线附近的一个置曲线自交点使用这种方法。

真正的平面的计算和拓扑分析曲线是一个很好的研究的问题
[1,18],而最坏的情况下复杂性是令人望而却步的;当前最好的理论束缚是
)(n log n O 516时间曲线
F(X,Y)= 0度n 和2-范数n[11]。

这种算法不考虑实际[9]。

当代数算法与数字技术相结合,更实用的算法实现[13,12]。

近日,计算几何学已开始处理曲线和曲面
[4,10,21]。

这些文件提供高效,完整的代数算法低度曲面和曲线。

更一般地,它们的目标是使算法的代数观点下更有效的和完整的;这些问题都往往被掩盖了更多的理论
文章。

相反,我们的目标是让算法下几何完全健壮的观点,同时保留其适应性效率。

更一般地,我们的表面上的目标是没有代数操作的情况下做精确的代数运算。

我们只能做的数值逼近,但利用代数零界限的正确性实现。

这项工作最直接与我们可比的是Wolpert 的和赛德尔的[23,22,20],如上所述。

最近,普兰廷卡Vegter[17]给出了同
位素的近似隐式非奇异的表面的拓扑正确的算法。

他们的细分基础的方法是几何的,全面的自适应;但是它是目前未知是否它可以扩展处理的奇点。

细分方法
,为解决多变量多项式系统最近被
Gershon 和Kim[7]和Mourrain 和Pavone[15]重视。

2 代数曲线的几何分离边界
我们的主要数学工具是分离边界的想法。

假设一个A(x,y)、B(x,y)∈Z(x,y)。

让k A 表示矢量A 的k-范数的系数(我们使用k= 1,2和k=∞)。

如果p ∈Rn 为欧氏空间中的一个点,其K-范数也有类似的符号
k P 。

我们省略下标k 时指2 - 范数,即欧氏距
离。

分别考虑定义的公式 A = 0的曲线F 和G 和B= 0。

一对(p,q),p ∈F 和q ∈G 这
样线通过p ,q 是正常的,p 在F 上和q 在G 上叫做(F ,G )正相反的对。

特别地,如果F 和G 相交相切于P ,那么(P ,P )是(F ,G 正相反的对。

在下文中,我们假设只有限多对(F ,G )正相反对。

这意味着是互质(即A ,B ,它们没有共同的组件)。

下面的结果依赖于一个多元根界Yap[24](定理11.45)。

我们的第一个结果是一个下界之间的距离上不同的点在一个正相反的一对。

定理1。

分别设f 和g 是定义的公式 A = 0和B= 0时。

假设F,G 有有限多个正相反的对。

让m=deg (A ),n=deg (B ),2A =a ,2B =b 。

如果(p ,q )是(F ,G )正相反对并
且p q
那么
22n m 12--D
2312NK 2b a n m q -p :,,,其中的K=max {nb 4ma 413,,},N=5n
2m 23,D=)(n 4m 4
3n m 22。

接下来,我们给不同的路口之间的分离界限要点:
定理2。

让曲线A= 0和B=0是基本相对。

在它们的交点如果
p ,q 为不同的点,那么22n m 12--D 23
22NK 2b a n m q p :,,,当K=max {
n m 13,,},N=(5n 2m 23
),D=)(n 4m 4
3n m 22。

如果p 不再曲线上,那么p 点能离曲线有多近?通过(L ,l )浮点数,我们平均数字的形式L -k 2m x 在,m ,k ∈Z ,L 2m ,l k 0。

注意-L l x lg (其中lg 是2log )。

我们简单地说“L位浮点”为(L ,L )位浮点。

定理3。

让q =(u ,v )是一个坐标(L ,l )位浮点数的点,2l ,A(u, v) = 0.如果A = 0不包含在q 为中心的圆的曲线,且p 是曲线A =0上一个点,则
2823
32)2(:,,,m D NK l L a m q
p 其中的n m n 44
3m D 5
n
2m 23N nb 4ma 413max K 22,},,,{必要条件即 A = 0不包含圆集中在q 不影响我们的应用程序贝塞尔曲线,因为圆弧非贝塞尔。

以上的范围对于一般的代数曲线。

对为
Bezier 曲线F ,我们必将2规范的约束在其控制多边形,(p0, . . . , pm )。

定理4。

设F 是一个度为m 贝塞尔曲线,控制点是
L-bit 浮点数字。

然后F 满足一个整数,度为m 多项式方程A (X ,Y )=0,其中m m L 2916A
)(。

Δ-分离的属性。

对于任何Δ> 0,我们说F ,G Δ分离的属性,如果对所有p=q ,如果(p ,q )是(F ,G )正相反对,或者如果
p ,q ∈F ∩G,那么q -p 。

上述定理给我们一个明确的绑定为
Δ。

重要的是要注意,本Δ取决于仅在初始输入曲线F ,G;随后细分的F ,G 不
改变Δ。

3 初等曲线
本节介绍的基本曲线的概念。

的主要结果是一个完整的标准非过交集基本的曲
线。

设f 是有界的,连续可微的函数定义在区间[c ,d 〕c<d 。

它的图形是参数化的曲
线 F = {F(t) : t ∈ [c, d]},其中F(t) = (t, f(t)) ∈2R 。

让G [c ,d]表示所有这些集图。

调用F(t)的图形参数化的F ,相比之下贝塞尔曲线的参数化法是后面介绍。

写“F = F(c ,d)”,以表明域(图或贝塞尔曲线)参数化(c ,d)。

如果 F = F(c,d),线段连接F(c)和F(d)称为F 基础部分。

调用F 一个初等曲线如果它是图的一个凸或凹函数
f 。

如果F 在于高于(或低于)其基地段,我们把它称为
A-初级(相应地,B-初级)。

让nF(t)表示正常线通过F(t),让θF (t) ∈[0, π)表示nF (d )与X 轴的夹角。

把nF (c) 和nF (d)叫做F =F[c, d]的最后的法线。

把正常的线nF(t)分成两半法线:一个上部aF (t)和下部aF (t)和F(t)作为半线共同的终点。

成为一个A-初级F ,定义它的上层波及区U(F)限制在aF (c)和aF (d) 和F 。

参见图2。

当我们扩展aF (c) 和aF (d)直到他们相遇,我们获得一个锥C(F),其中包含U(F)。

重要的属性是U(F)通过上面的一半法线aF (t) (t
∈[c, d])“分层”。

图2:上层波及区U(F)
初级连接。

修复一个一个初等曲线F;为简单起见,假定F ∈ G[0, 1]。

让G ∈ G[c,
d]是另一个初等曲线。

我们称(F,G)是初级连接如果(1)G(c) ∈ aF (0)和G(d) ∈ aF
(1),(2)整条曲线G躺在圆锥C(F)中。

参见图3。

注意G可以是A-或B-初级;因此,我们称(F,G)为AA或AB-连接。

图3:初级连接(F,G):(a)ab连接(b)aa连接
引理5。

让(F,G) ∈ G[0, 1]×G[c, d]是一个基本连接。

如果G ? U(F)然后有一个独特的连续函数s : [0, 1] → [c, d]使得对所有t∈[0,t],G(s(t))位于上半部分正常的自动对焦aF(t)。

推论6。

与(F,G)与前面的引理,如果G?U(F)然后角函数
) (1): [0, 1] → (-π, π
α 
被给α(t) = θF (t) -θG(s(t))是明确的和持续的。

为了表示依赖于F,G,为这些功能我们可以写出α =αF,G and s = sF,G,。

我们的主要结果测试不相交交点如下:
定理7(非交叉交点准则(NIC))。

让(F,G)是一个初级的连接,G ? U(F)和ɑ通过(1)给出。

假设F ,G Δ分离的属性和的F ∪G 是直径小于Δ。

(1)如果α(0)α(1) ≤ 0,那么F 和G 在个独特的点相交切线。

(2)如果α(0)α(1) > 0,那么F 和G 是不相交的。

在接下来的三个部分中,我们将展示如何应用在一个交点应用
NIC 算法。

4 交叉点与线
与一条贝塞尔曲线F 相交的特殊情况直线l 处理在标准教科书[8]。

现在,我们给出一个完整的情况下,F 是基本的算法。

当F 代表了其控制多边形P(F) =(p0, . . . , pm),然后它有贝塞尔曲线参数化t B p t F i
m m
0i i )(和i -m i i
m t -1t i m
t B 虽然默认的曲线是 F = F[0,1],我们也可
以指定一个任意的间隔I = [c, d]定义曲线F[I] = F[c, d]。

使用符号“I → (10I I ,)”如果一个间隔I 分为两个子区间10I I ,(除非另有说明,否则承担二分
I 说明)。

同样,我们写“10F F F ,”意味着F = F[I]在10I I I ,被细分为11
00,F I F F I F 。

我们的输出线相交算法是一组(l,i F ),每个i F (i
0)都是原始曲线F 的代替曲线并且i F l
有一个独特的交点。

相对简单的算法,省略在该扩展抽象的。

我们注意到,在这个特殊的情况下,我们在没有调用NIC 的情况下可以检测使用几何分离边界的独
立的切线交点。

这条线相交算法中使用的一般算法的几个中的子程序。

正下方超越算法的用处:这是一种形式的“射线拍摄”中使用的以下的连接过程。

至于q v ,让射线(q ,v )表示射线原始点在q 并且通过v 。

在输入(F ,q ,v ),其中F 是最基本的,这个测试会产生三个输出之一:通过,如果q ∈ F ;在上方,如果射线
(q ,v )与F 相交,但是q F ;在下方,其他情况。

我们首先计算线F 与通过q ,v 线的
交点。

如果没有交点,我们得到在下方。

另外,我们多次细分
F ),(10F F 并且如果CH (i F )包涵q 就用i F 代替F 。

我们终止当q
CH(0F ) ∪CH(1F ),或者直径(F )<
23(定理3)。

在终止,如果q 在CH(0F )∪CH(1F )外,我们可以很容易地确定在下方或者在上方;否则我们得到通过,因为(F )<23。

5 角的自适应标志NIC 准则(定理7)需要的角度的标志α(0)和α(1)。

我们开发这个符号确定的自适应过程。

设F 是一个基本的曲线贝塞尔曲线参数化F (t )=(t F t F x x ,),并且l 是
一条参数化方程L(t) = (ct + d, et + f),c, d, e, f 是常量。

我们可以假设 e > 0.让l 和F 相交
于点F (*t )。

我们想确定的符号角l -t t *F *)()(,其中),0(πl
是l 的倾斜角。

我们认为该α(t )的符号是等于S (t ):=c )(t F )(F ''x y e t 2
的符号。

从式(2),我们可以为S (*t )开发一个下界:如果控制多边形的F 具有m +1个点L-位浮点的坐标,和假设
c,d,e,f 是L-位浮点数,那么
0t S *)(意味着-m m L *9m1286t S )()(。

现在,我们可以自适应地通过近似*t 和估计误差进行计算)(*t S 的符号。

查看完整的纸张了解详细信息。

6 连接过程
在本节中,假设F ,G 是满足Δ形分离特性的初等贝塞尔曲线,并且使得
F ∪
G 的直径小于Δ。

这意味着,| F ∩G|≤1。

我们的目标是,以确定它们是否相交。

如果他们相交,相切,我们最终必须至少是含蓄地减少他们
NIC ,。

此过程被称为连接的过程。

通过研究的动力,注意,要应用NIC ,必须细分F ,G 直到我们看到一个基本的连接('',F G ),其中‘F ?F ,'G ?G 。

这似乎一般很难达到。

相反,我们建议扩展NIC
来处理“半连接”。

让F = F[0, 1]是一个A-初级,G 就是前面提到的G 。

即,垂直条带内的S (F )有界通过F (0)和F (1)的垂直线,G 就是上述F 。

假设我们发现一个
半正态分布aF (t )与G 相较于一个特殊的点。

如果
0G 是G 到U (F[0,t])的限制,那么我们把(F[0,t],0G )叫做半连接;我们同样可以定义另一个半连接(
F[t,1],1G )。

注意,10G G ,是间接的贝塞尔曲线。

原来我们可以为半连接改编NIC (定理7)。

概括地说,连接过程有三个步骤:1.我们检测是否F 和G 穿越交叉点。

这是很容易减少到最多四个下方超越测试。

如果有是交点,我们正在处理。

因此任何假定。

都有对称性,我们可以假设 F = F[0,1]是A-初级,G 是上述F 。

2.使用二进制搜索找到一个t ∈[0,1]这样aF (t )相交G 。

这不是很难解决的轻微复杂的情况下假设
aF (t )相交G 于两个点。

在任何情况下,我们已经减少了两个半连接的搜索。

3.应用下面的半连接NIC 。

这三种情况图4中可见的半连接。

定理8.(半连接NIC )。

假设(F[0, 1], G[c, d])是一个半连接aF (0)通过G (c )并且aF
(1)不与G 相交。

此外,终点G (d )在U (F )上,F 是上文中的F 。

让)(d b G 表示G (d )低一半标准。

定义
)(d G 是角度的向上正常在G (d )作出与正x-轴(如前)。

我们有三种可能性:
(1))(),(0
a d
b F G 相交。

(2))1
(d b G F a ),(相交。

(3)F
d),(b G 在点F(t)相交10t ,。

在这种情况下,让))()((sign s d t G F },,{1-1
0。

然后我们拥有:
)()
()
()可能性()或者可能性()可能性()或者可能性()可能性(){(011030320310
t G F,
(4)图4.半连接:(1))(),(0a d b F G 相交。

(2))1(d b G F a ),(相交。

(3)F d),(b G 在点F(t)相交
7 关键点
我们现在解决非基本B ézier 曲线这个问题。

贝塞尔曲线F [0,1]可以细分为有限多
个初级代替曲线。

点F (t )在该细分发生的“临界点”。

图5(1)表示三次B ézier 一个
临界点。

图5 单一三次B ézier 曲线:(1)控制多边形(2)矢端曲线
让)(),(t F t F y x 是F = F[0, 1]的坐标函数,即,F (t )=()
(),(t F t F y x ),然后让),(F '''y x F F 表示相对于t 的衍生工具。

把t ∈ (0, 1) 称为一个临界值,F (t )是
一个临界点,如果满足下列条件之一(参见Kim 和Lee[14]):
(1)F (t )是固定值,即,0)()(F ''t F t y x ;
(2)F (t )是x 极限值,即,0)(F )(F ,0)
(F '
''t t t x x x ,0)(F 't y ;(3) F(t)是一个拐点,即,
)(t H F 0,0)(H )(H F F t t 在)()(F )()(F t H ''''''
F t F t t F t x y y x ):(。

引理9.如果F 其相对内部没有关键点,那么
F 是基本的。

相反,如果F 是基本的,那么它没有X-极值或拐点在其相对内部。

临界值是代数数字。

因此,我们不建议细分B ézier 曲线的基本部件细分的关键点。

相反,我们将细分B ézier 曲线在长浮点数以使所得代替曲线是初级或包含在最关键点。

把正好包含一个临界点基本曲线叫做临界曲线。

现在,我们呼吁更多的分离由一个单一的数字总结的边界Δ*>0进行说明。

在本节的其余部分,假设控制多边形
F ,
G 是P(F)=(m p p ,...,0),P(G)=(n q ,...,q 0)。

此外,坐标s q s j i ''
,p 是L 位长浮点数。

首先,我们约束的程度和规范关键点:
引理10.
(1)如果F (t )=()(),(t F t F y x )是一个固定或x 极值,那么)(F t F x t y ),(有
角度m-1,2-标准最多m m L m 94)(。

(2)如果F(t)是一个拐点,那么F (t )有角度
标准,-23-m 2最多(m L 8116m 24)m 。

这给我们:
推论11.设p ,q 是F 的两个不同的关键点。

如果n m 2
那么| p.x - q.x|或| p.y - q.y|有一个比
-m
5m 2L 2m 4m 8125616)(:大。

接下来,我们推广定理3为了处理p 是任何代数点:
定理12.设q=(q.x ,q.y ),在那里q.x ,q.y 是代数2-范数
c 和角度
d 。

让多项式A (X ,Y )有2-范数a 和m 角度。

如果曲线A (X ,Y )= 0不包含一个圆圈集中在q 点
那么
q 到A=0的距离最少
),,,,(d c L a m 522d m 12--D 232NK 2)(其中的},,,{c ma 413max K )(5d 2m
25N ,)(d 4
m
4
3d m D 22。

让Δ6=Δ(m ,n ,L )是曲线G 和F 中一个关键点p 的之间的最小距离,假设G p。

这限制来自定理12中的引理10。

最后,选择在
1(定理1),所述2(定理2),4和6中范围是最低的
*。

如果直径*)(F ,我们可以称F 为微曲线。

这是众所周知的,相对于t 的导数是由下式给出
)()()()(F 1111111't B p m t B p p m
t i m m i i i m m i i i 这里我们定义i i i p p p 1:。

并且让)(P F 表示(m
p p ,...,1)。

因此,我们看到,m?P (F )是曲线)(F 't 的控制多边形,称为速度图F 。

因此,F 包含一个固定的点,当且仅当)(F 't 通过其原点。

例如,图5(2)
的?P (F )是为图5(1)立方B ézier 曲线的给出的;在这种情况下我们可以检查速度
面通过的原点。

定理13 (固定点)。

让直径(F )<m ma )(2,,1
-m 3。

然后F 包含一个固定的点当且仅当凸包逼近?P (F )中包含的原点(0,0)。

定理14(x 极端点)。

让直径(F )<
*。

然后F 包含X 极端点当且仅当0).().(1x p x p m 和0).().(1y
p y p m 。

如果p ,q ,r 是平面点,让行列式(p ,q ,r )是3×3矩阵的决定因素它的行是h h h r q p ,,,其中的)1,.,.(y p x p p h 。

同样也让行列式(p ,q )表示p.xq.y-p.yq.x 。

定理15(拐点)。

让直径(F )<
*。

然后F 包含了一个拐点,当且仅当行列式(210,,p p p )
(m m m p p p ,,12)< 0。

前面的三个定理给我们的完整条件检查,如果一个微型的曲线是一个基本的临界
曲线。

8 交叉点算法
我们现在目前全球任意两个
B ézier 曲线相交算法。

我们设计的算法,以便自然是通用的交叉算法(参见导言)嵌入式的第一阶段,我们的算法。

简单而不是实际的效率是下列目的描述。

我们有两个工作队列10Q Q ,。

每个队列只是候选对的列表。

如果直径
CH(F)CH(G)比*小,一个候选对(F ,G )被称为一个微对;否则这是一个宏观的
对。

称10Q Q ,为宏观队列和微队列,因为它们分别含有宏对和微型双。

明显的初始
化后10Q Q ,,该算法分为两个阶段:
宏阶段:这基本上是第1节0Q 上操作通用交点的算法。

关键的区别是分拆后一对(F ,G )在(i F ,G )(i = 0,1)中,如果(i F ,G )是一个候选对,我们根据它是否是一
个宏观或微观对,把它变成10Q Q ,。

如果我们没有其他的东西还是宏观段,我们仍
然是正确的。

但在实践中,我们执行各种有效的部分标准(例如,测试横向交点)。

0
Q 是空的的时候,这个阶段结束。

微观段:现在,我们为每对(F ,G )提取1Q :我们检查,如果F 包含一个关键点(第
7章)。

如果是这样,我们就可以对输出。

否则,我们采用的连接过程(第6章)。

备注。

宏观相是“标准”,易于实现。

微相对待退化和可能情况。

宏观相结束时,
微队列预计为“很好的”输入是小的或空的。

8.开放性问题
本文开辟了可能性,实现全面的自适应算法与其他计算的正确性保证涉及的曲线
和曲面的问题。

这个新的方向在本质上依赖于使用的几何分离边界。

最明显的问题是开放的,所以我们只列出的近期论文有关的几个问题:
我们的F ,G 交叉算法有这样的双极性假设:
F ,
G 有有限多正相反对。

如前所述,它概括了标准的假设,F ,G 是互质。

显然,如果F 是一个G 的偏移量,反之亦然,正相反假设将失败。

我们推测它是相反的东西。

Sungwoo Choi 已经证明了这个猜想。

Choi 的定理意味着,当双极性假设失败的时候它是一个
Δ分离的属性持有者。

因此,对映假设并不是必不可少的。

不幸的是,我们不知道如何约束Δ没有正相反的假设。

·给我们的算法的复杂度分析,或一些的变型。

在一般情况下,细分的算法的复
杂性似乎知之甚少。

·像我们这样实现一个自适应算法,比较非健壮的细分算法或代数算法。

·提高我们的分离范围。

·我们已经有所改善利用的事实是贝塞尔曲线的边界,这些都为简洁起见省略。

·提供一个简单的算法的情况下,只有横向的交叉点。

鸣谢
特别感谢Myung-Soo Kim 教授在首尔国立大学的热情款待。

在与
Myung-Soo Kim, Gershon Elber, Joon-Kyung Seong 和Iddo Hanniel 的讨论中我们受益匪浅。

王文平教
授指出,有必要区分切向交叉和切向非交叉的情况。

9.参考文献
[1] D. S. Arnon and S. McCullum. A polynomial-time algorithm for the topological type of
a real algebraic curve. J. of Symbolic Computation, 5:213–236, 1988.
[2] C. Bajaj and M.-S. Kim. Algorithms for planar geometric models. In Proc. 15th Int.
Colloq. Automata, Languages and Programming, pages 67–81, 1988. Lecture Notes in。

相关文档
最新文档