当前位置:文档之家› Bezier曲线的拼接及其连续性

Bezier曲线的拼接及其连续性


三次Bezier曲线的插值
插值要求得到的曲线精确的通过采样点,四个控制点决定 一条Bezier曲线,插值M个点(M>4)设计到曲线拼接连续性 的问题,要求达到切线连续。
三次Bezier曲线的数学表达是为:
1 3 3 B(t ) di bi3 (t ) t 3 t 2 t 1 3 i 0 1 3 3 1 d0 6 3 0 d1 , t [0,1] 3 0 0 d2 0 0 0 d3 (1)
function Byangtiao8(p) t=0:0.005:1; hold on for i=1:5 x=p(1,i)*(1/6)*(-t.^3+3*t.^2-3*t+1)+p(1,i+1)*(1/6)*(3*t.^36*t.^2+4)... +p(1,i+2)*(1/6)*(-3*t.^3+3*t.^2+3*t+1)+p(1,i+3)*(1/6)*t.^3; y=p(2,i)*(1/6)*(-t.^3+3*t.^2-3*t+1)+p(2,i+1)*(1/6)*(3*t.^3-6*t.^2+4)... +p(2,i+2)*(1/6)*(-3*t.^3+3*t.^2+3*t+1)+p(2,i+3)*(1/6)*t.^3; plot(x,y,'k'); end plot([p(1,1) p(1,2) p(1,3) p(1,4) p(1,5) p(1,6) p(1,7) p(1,8)], [p(2,1) p(2,2) p(2,3) p(2,4) p(2,5) p(2,6) p(2,7) p(2,8)]);
Q (t ) n Pi ( Bi 1,n 1 (t ) Bi ,n 1 (t ))
i 0
n
n((P1 P0 ) B0,n 1 (t ) ( P2 P1 ) B1,n 1 (t ) ( Pn Pn 1 ) Bn 1,n 1 (t )) n ( Pi Pi 1 ) Bi 1,n 1 (t )
Bezier曲线的拼接及其连续性
组员:栗周亚(主讲)樊凯 葛序理 牛辰光
顾超锋
尹顺源
Bezier曲线
由于几何外形设计的要求越来越高,传统的曲
线曲面表示方法, 已不能满足用户的需求。 1962年,法国雷诺汽车公司的P.E.Bézier 构造了一种以逼近为基础的参数曲线和曲 面的设计方法。Bézier方法将函数逼近同 几何表示结合起来,使得设计师在计算机 上就象使用作图工具一样得心应手。
i ,n
(t ) 1
所以当t在[0,1]区间变化时,对某一个t值,Q(t)是特 征多边形各顶点的加权平均,权因子依次是 Bi ,n (t )。在 几何图形上,意味着Bézier曲线Q(t)在 [0,1] 中各点是 t 控制点Pi的凸线性组合,即曲线落在Pi构成的凸包之 中;
(5)几何不变性
曲线的形状仅与特征多边形各顶点 的相对位置有关,而与坐标系的选 择无关。
P0 , P , P2 ,..., Pn ,拼接的Bezier曲线为 1
B(t ), t [0,1]
P0 , P , P2 ,..., Pn 参数化到[0,1]区间上的值,即求 1
。常采用弦长参数法
t0 , t1 , t2 ,..., tn ti [0,1]
Step 2: 对每一段三次的Bezier曲线,有
function myplotB(x,y,str) B=[]; m=length(x); for t=0:0.01:1 [X,Y]=Beziercurve(x,y,t); B=[B,[X(1,m);Y(1,m)]]; end plot(B(1,:),B(2,:),str,'Linewidth', 2.5) hold on
M i'' 为 P1 i
Pi 2 。
Step 5:分别以 PP2 P11P1, i 0,1,..., n 1 为4个控制点按照(1) i i i i 式画出一条三次的Bezier曲线,得到的Bezier曲线插值于 每一个采样点 P , P , P2 ,..., Pn 且分片一次连续。 0 1
[tx,ty]=interporder2c10(x,y,delt a); m=length(tx); for s=1:2:m-1 hold on myplotB(tx(s:s+2),ty(s:s+2),'r'); end hold off end


Bezier曲线是通过一组多边折线的各顶 点唯一的定义出来的。在多边折线的各顶 点中,只有第一点和最后一点在曲线上, 其余的顶点则用以定义曲线的阶次和形状。 多边折线称为特征多边形,其顶点称 为 控制点。

Bézier曲线示例
Bézier曲线P(t)与其控制多边形的关系可以这样 认为:控制多边形P0P1…Pn是P(t)的大致形状 的勾画;P(t)是对P0P1…Pn的逼近;
P0 B0, n (1) P B1, n (1) Pn Bn, n (1) 1
Bezier曲线通过特征多边形的起点和终点。
Pn
(2)一阶导数
n! i 1 n i n i 1 i ,n (t ) Bi (i t (1 t ) (n i )(1 t ) t ) i!(n i)! n(n 1)! t i 1 (1 t ) ( n 1)(i 1) (i 1)!((n 1) (i 1))! n(n 1)! t i (1 t ) ( n 1) i i!((n 1) i )! n( Bi 1,n 1 (t ) Bi ,n 1 (t ))
执行:
15
>> Byangtiao8([4,6,3,1,7,9,15,11;0,9,11,15,15,7,6,12])
10
5
0
0
5
10
15
附录:C1的二次B样条闭曲线Matlab程序
function Testorder2C10 axis([0 10 0 10]) hold on x=[]; y=[]; n=0; while (1) [xtemp, ytemp, button]=ginput(1); if button==3 break end plot(xtemp, ytemp, '.'); x=[x;xtemp]; y=[y;ytemp]; n=n+1; end delta=ones(n,1); %此处01...l−Δ=Δ==Δ
18 16 14 12 10 8 6 4 2
1
2
3
4
5
6
7
2 Bezier曲线的性质
(1)端点
Q(0) Pi Bi ,n (0)
i 0
n
P0 B0,n (0) P B1,n (0) Pn Bn ,n (0) 1 P0
Q(1)
PB
i i 0
n
i , n (1)
i 1 n
起始点: 终止点:
Q(0) n( P P0 ) 1
Q(1) n( Pn Pn1 )
(3)对称性
保持n次Bezier曲线诸顶点的位置不变, 而把次序颠倒过来,则此时曲线仍不变, 只不过曲线的走向相反而已。
(4)凸包性
由于
Bi ,n (t ) 0,
B
i 0
n
1. Bezier曲线的定义
Q(t ) Pi Bi ,n (t )
k 0 n
t [0,1]
Pi表示特征多边形的n+1个顶点的位置向量, Bi ,n (t ) 是波恩斯坦多项式,Bernstein基函数具有 如下形式:
n! n i n i i i i Bi ,n (t ) t 1 t Cnt 1 t i!n i ! i 0,1,, n
M i' , M i'1
Step 3:将 Di 沿着 Di P 的方向移到 Pi ,对应的 M , M i i i 1 移到

Step 4:保持
Pi点不变收缩线段
Mi' Mi'1 到 Mi'' Mi''1 ,且
'' 为 , M i 1
Mi'' Mi''1 0.6Mi' Mi'1 。记
执行: >> bezier3([0,3],[5,20],[7,2],[9,1])
16 14 12 10 8 6 4 2 0
0
1
2
3
4
5
6
7ቤተ መጻሕፍቲ ባይዱ
8
9
Bezier曲线的拼接
拼接不要求曲线通过每一个采样点,只要求曲线 “很接近”采样点就行。“很接近”的评价标准常为最 小平法逼近。 拼接的一般步骤:
设采样点为 Step 1: 将
注意:当i=0,t=0时,ti=1,i!=1。
1.一次Bezier曲线(n=1)
一次多项式,两个控制点
Q(t ) Pi Bi ,1 (t ) (1 t ) P0 tP 1
i 0
1
t [0,1]
这是一条连接起点和终点的直线段
2.二次Bezier曲线(n=2)
二次多项式,三个控制点
( P B (t ))
i 0 i i i
4
2
最小,需要求每一段Bezier曲线的控制点。 按照这种算法需要反求控制顶点,随着数据采集量的增大, 2 计算量成 n 倍增长,且反求控制点的矩阵若为病态矩阵, 则求解更耗时间,拼接的结果也不尽人意。
相关主题