搜索
您的当前位置:首页贝塞尔曲线和B样条曲线

贝塞尔曲线和B样条曲线

来源:智榕旅游
§4.3 贝塞尔曲线和B样条曲线

在前面讨论的抛物样条和三次参数样条曲线,他们的共同特点是:生成的曲线通过所有给定的型值点。我们称之为“点点通过”。但在实际工作中,往往给出的型值点并不是十分精确,有的点仅仅是出于外观上的考虑。在这样的前提下,用精确的插值方法去一点点地插值运算就很不合算;另外,局部修改某些型值点,希望涉及到曲线的范围越小越好,这也是评价一种拟合方法好坏的指标之一。

针对以上要求,法国人Bezier提出了一种参数曲线表示方法,称之为贝塞尔曲线。后来又经Gorgon, Riesenfeld和Forrest等人加以发展成为B样条曲线。 一、

贝塞尔曲线

贝塞尔曲线是通过一组多边折线的各顶点来定义。在各顶点中,曲线经过第一点和最后一点,其余各点则定义曲线的导数、阶次和形状。第一条和最后一条则表示曲线起点和终点的切线方向。

1.数学表达式

n+1个顶点定义一个n次贝塞尔曲线,其表达式为:

p(t)piBi,n(t) 0t1

i0npi(i0,1,2,...,n)为各顶点的位置向量,Bi,n(t)为伯恩斯坦基函数

Bi,n(t)n!ti(1t)ni

i!(n1)!

2.二次贝塞尔曲线

需要3个顶点,即p0,p1,p2,将其代入曲线表达式:

p(t)p0B0,2p1B1,2p2B2,2

B0,22!t0(1t)20(1t)212tt2

0!(20)!2!t1(1t)212t(1t)2t2t2

1!(21)!2!t2(1t)22t2

2!(22)!B1,2B2,2p(t)(12tt2)p0(2t2t2)p1t2p2

t2121p0p 0t1 t12201001p2p(t)2(t1)p02(12t)p12tp2

p(0)2p02p12(p1p0) p(0)p0

p(1)2p12p22(p2p1) p(1)p2

当t1时: 2111111111p(12)p0(22)p1p2p0p1p2

24244424211[p1(p0p2)] 221111p2(1)p02(12)p12p2p2p0

2222

3.三次贝塞尔曲线

三次贝塞尔曲线需要4个点,即p0、p1、p2、p3。

p(t)p0B0,3(t)p1B1,3(t)p2B2,3(t)p3B3,3(t)

其中:B0,33!t0(1t)30(1t)313t3t2t3

0!(30)!3!t1(1t)313t(1t)23t6t23t3

1!(31)!3!t2(1t)323t2(1t)13t23t3

2!(32)!3!t3(1t)33t3

3!(33)!B1,3B2,3B3,3p(t)(13t3t2t3)p0(3t6t23t3)p1(3t23t3)p2t3p3

p(t)t3t2133363t13300011p0p01 0t1 0p20p3贝塞尔曲线特点:

1.n个顶点定义n-1次曲线,当顶点数较大时,拟合的曲线阶次太高。 2.任一顶点对整条曲线的形状都有关系,不利于局部修改。

二、B样条曲线

用B样条曲线基函数替代伯恩斯坦基函数。 1.数学表达式

通常,给定m+n+1个顶点pi(i0,1,,mn)可以定义m+1段n次参数函数为:

pi,n(t)pikFk,n(t) (0t1),(i0,1,,m)

k0n其中Fk,n(t)为B样条分段混合函数,形式为:

1nkFk,n(t)(1)jCnj1(tnkj)

n!j0• 段数、次数 段数=节点数-次数,每段曲线与n+1个点有关;

n• Cmm!

n!(mn)!2.二次B样条曲线 n=2,k=0,1,2

pi(t)piF0,npi1F1,npi2F2,n

F0,n120(1)jC3j(t20j)2 2!j013!3!3![(1)0(t2)2(1)1(t1)2(1)2t220!(30)!1!(31)!2!(32)!

1(t1)22F1,2121(1)jC3j(t21j)2 2j013!3![(1)0(t1)2(1)1(t11)2]20!(30)!1!(31)!

1(2t22t1)2F2,21013!1(1)jC3j(t22j)2(1)0t2t2 2j021!(31)!2pi(t)111(t1)2pi(2t22t1)pi1t2pi2 222pi(t)(t1)pi(2t1)pi1tpi2

1(pipi1) 21p(1)(pi1pi2)

2p(0)p(0)pi1pi p(1)pi2pi1

111p(){[p(0)p(1)]pi1} 2221p()p(1)p(0) 2

3.三次B样条曲线 n=3, k=0, 1, 2, 3

pi(t)pikFk,3(t)F0,3B0F1,3B1F2,3B2F3,3B3

k03其中Fk,31nk(1)jCnj1(tnkj)n, Bl(l0,1,2,3)称为特征多边形。 3!j0F0,313(1)jC4j(t3j)3 3!j014!4!4!4![(1)0(t3)3(1)1(t2)3(1)2(t1)3(1)3t360!(40)!1!(41)!2!(42)!3!(43)!13(t3t23t1) 612(1)jC4j(t31j)3 3!j0F1,314!4!4![(1)0(t2)3(1)1(t1)3(1)2t360!(40)!1!(41)!2!(42)!

1(3t36t24)6F2,311(1)jC4j(t32j)3 3!j014!4![(1)0(t1)3(1)1t3] 60!(40)!1!(41)!F3,31(3t33t23t1) 61014!1(1)jC4j(t33j)3(1)0t3t3 3!j060!(40)!6p(t)13111(t3t23t1)B0(3t36t24)B1(3t33t23t1)t366661331B013630B132 0t1 ttt130B26301410B3

p(t)1111(t22t1)B0(3t24t)B1(3t22t1)B2t2B3 2222B013311B1 t2t12420B221010B3p(0)11BB22(B04B1B2)(0)B1 632311BB32(B14B2B3)(1)B2 6323p(1)p(0)1(B2B0) 21p(1)(B3B1)

2p(0)(B2B1)(B0B1) p(1)(B3B2)(B1B2)

例: 设p0(4,3),p1(6,5),p2(10,6),p3(12,4),用以上四个点构造2次B样条曲线。

由B样条的定义可知,4个点可定义2次B样条曲线2段: m+n+1=4 n=2 m+1=2

pi,2(t)111(t1)2pi(2t22t1)pi1t2pi2 222pi,2(t)ApiBpi1Cpi2

111(t1)2p0(2t22t1)p1t2p2 222111p0,2(t)(t1)2p1(2t22t1)p2t2p3

222p0,2(t) t A B C p0,2(t) 0 0.5 0.5 0 0.2 0.32 0.66 0.02 0.4 0.18 0.74 0.08 0.6 0.08 0.74 0.18 0.8 0.02 0.66 0.32 1 0 0.5 0.5 0.5p0+0.5p1 0.32 p0 +0.66 p1 +0.02 p2 p1,2(t)

因篇幅问题不能全部显示,请点此查看更多更全内容

Top