计算机图形学_三次参数样条曲线
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三次样条曲线
问题提出
有空间的n个点,p1,p2, p3,……,pn 要用一条曲线光滑连接
p2 p3 p1 p4
pn
解决问题的思路
插值 •三次样条曲线插值 •三次参数样条曲线插值
三次样条曲线-定义
对 于 给 定 的 n 个 型 值 点 Pi(xi,yi), 且 hi=xi+1-xi>0, i=1,2,…,n,若y=S(x)满足下列条件: (1) 在Pi(xi,yi)点上有yi=S(xi); (2) S(x)在[x1 , xn]上二阶连续可导; (3)在每个子区间[xi , xi+1]上,S(x)是x的三次多项式; 则称 S(x) 为过型值点的三次样条函数,由三次样条函 数构成的曲线称为三次样条曲线。
连 续 的 三 次 参 数 样 条 曲 线
ti1 ti2 令: B 3( ( pi2 pi1) ( pi1 pi )) ti2 ti1 有 pi i [ti2 2(ti2 ti|1) ti1] pi1 B i 1,, n 2 pi2
Di=6/(hi-1+hi) *[( yi+1-yi)/ hi-( yi-yi-1)/ hi-1]
λi+μi=1
(1)夹持端: 2 M1+ M2=6[( y2- y1)/ h1- y1']/ h1; λi Mi-1+2 Mi+μi Mi+1= Di,i=2,3,…,n-1; Mn-1+ 2Mn=6[ yn' -( 百度文库n- yn-1)/ hn-1]/ hn-1; (2)自由端: M1=0; λi Mi-1+2 Mi+μi Mi+1= Di,i=2,3,…,n-1; Mn=0; 3)抛物端: M1 - M2=0; λi Mi-1+2 Mi+μi Mi+1= Di,i=2,3,…,n-1; Mn-1 - Mn=0;
三次样条函数曲线的形式推导
(3)要求曲线在二阶连续可导,则有 Si' (xi+1)= Si+1' (xi+1) Si" (xi+1)= Si+1" (xi+1) 从而有 bi+2cihi+3di hi2= bi+1 2ci+6di hi=2ci+1 (求di) (4)令Mi=2ci; 则有: ai = y i ci=Mi/2 di=( Mi+1- Mi)/6 hi bi =( yi+1- yi)/ hi- hi(Mi/3+ Mi+1/6)
三次样条函数曲线的求解条件
已知: (1)n个数据点Pi(xi,yi),i=1,…,n (2)每一段都是三次的多项式函数曲线 (3)节点达到二阶连续 (4)两个端点的特性(固定端\抛物端\自由端) 根据给定点求每段曲线的具体表达式
三次样条函数曲线的形式推导
由定义可知在[xi , xi+1]上,Si(x)可写成: Si(x)=ai+bi(x-xi)+ci(x-xi)2+di(x-xi)3 ai, bi, ci, di为待定系数 (1)由于yi=Si(xi), Si(xi+1)= Si+1(xi+1)= yi+1, 有 yi = a i ai+bihi+cihi2+dihi3= yi+1(用于求bi) (2)由Si' (x)= bi+2ci(x-xi)+3di(x-xi)2 有 Si' (xi)= bi 由Si" (x)= 2ci+6di(x-xi) 有 Si" (xi)= 2ci
三次样条函数曲线的端点条件
(1)夹持端: 端点处一阶导数已知,即 S1' (x1)=y1' 亦即y1'= b1= ( y2- y1)/ h1- h1(M1/3+ M2/6) 2 M1+ M2=6[( y2- y1)/ h1- y1']/ h1 Sn-1' (xn)=yn' 亦即yn-1'= bn-1= ( yn- yn-1)/ hn-1- hn-1(Mn-1/3+ Mn/6) Mn-1+ 2Mn=6[ yn' -( yn- yn-1)/ hn-1]/ hn-1 得方程组为: 2 M1+ M2=6[( y2- y1)/ h1- y1']/ h1; λi Mi-1+2 Mi+μi Mi+1= Di,i=2,3,…,n-1; Mn-1+ 2Mn=6[ yn' -( yn- yn-1)/ hn-1]/ hn-1;
p1 p2
三 次 参 数 样 条 曲 线 推 导
p ( 0 ) p1 B1 p ( 0 ) B 2 p1 2 3 p ( t 2 ) p 2 B1 B 2 t 2 B 3 t 2 B4t 2 2 p ( t 2 ) B 2 2 B 3 t 2 3 B 4 t 2 p2 p2 3 ( p 2 p1 ) 2 p1 B3 2 t2 t2 t2 p2 2 ( p1 p 2 ) p1 B4 2 2 3 t2 t2 t2 从而有 : p2 2 3 ( p 2 p1 ) 2 p1 t [ ]t p ( t ) p1 p1 2 t2 t2 t2 p2 3 2 ( p1 p 2 ) p1 [ 2 2 ]t 3 t2 t2 t2
三次样条函数曲线的形式推导
从而有: ai-1 = yi-1 ci-1=Mi-1/2 di-1=( Mi- Mi-1)/6 hi-1 bi-1 =( yi- yi-1)/ hi-1- hi-1(Mi-1/3+ Mi/6) (5)由 Si-1' (xi)= Si' (xi) 有bi-1+2ci-1hi-1+3di-1 hi-12= bi 令:λi= hi-1/(hi-1+hi),μi= hi/(hi-1+hi) Di=6/(hi-1+hi)*[( yi+1-yi)/ hi-( yi-yi-1)/ hi-1] 可得:λi Mi-1+2 Mi+μi Mi+1= Di, 其中:λi+μi=1,i=2,3,…,n-1
三次样条函数曲线的求解方法
已知: (1)n个数据点 Pi(xi,yi),i=1,…,n (2) 每一段都是三次的多项 式函数曲线 (3)节点达到二阶连续 曲线: Si(x)=ai+bi(x-xi) +ci(x-xi)2+di(x-xi)3 Mi=2ci: ai = yi ci=Mi/2 di=( Mi+1- Mi)/6 hi bi =( yi+1- yi)/ hi - hi(Mi/3+ Mi+1/6)
三次参数样条曲线
求三次参数样条曲线的表达式 p(t)=B1+B2t+B3t2 +B4t3 0<=t<=tm (1)给点pi(i=1,…,n) (2)给端点条件 (3)解方程求各点切矢量; (4)计算各段系数(取ti+1为第i段直线段长) (5)根据参数给各段曲线
p2 p3 p1 p4 p5
三次样条函数曲线的端点条件 (2)自由端: 端点处曲线二阶导数为零 即S1" (x1)=y1"=0 , Sn-1" (xn)=yn"=0 亦即 S1" (x1)= 2c1=0;=>M1=0 Sn-1" (xn)=2cn-1+6dn-1hn-1=0;=> Mn=0 得方程组: M1=0; λi Mi-1+2 Mi+μi Mi+1= Di,i=2,3,…,n-1; Mn=0;
i
式中: p’i 第i点的切矢量为未知 数,(i=1,…,n) 求解n个未知数,要n个方程
连续的三次参数样条曲线端点条件
(1)夹持端 pn 已知 p1 方程为 : [ti2 pi Bi i 1,, n 2 2(ti2 ti|1) ti1] p i1 pi2
????
• OK?!
三次参数样条曲线
有空间的n个点,p1,p2, p3,……,pn 要用一条三次参数样条曲线插值
p2 p3 p1 p4
pn
三次参数样条曲线定义
三次参数样条曲线的表达式 p(t)=B1+B2t+B3t2 +B4t3 0<=t<=tm 在两点p1,p2之间定义一条该曲线(参数形 式) 令p1t=0; p2t=t2; 已知: p’1, p’2 代入方程可得方程系数B1\B2\B3 \B4
三 次 参 数 样 条 曲 线 端 点 条 件
( 2 )自由端 0 p n 0 已知 : p1 i 1时 : p2 3( p 2 p1 ) 2 p1 0 2 t2 t2 t2 3( p 2 p1 ) p2 2 p1 t2 i n 1时 1 p n 3( p n p n 1 ) 2 p n 2( ) 2 tn tn tn 1 p n 2 ( p n 1 p n ) p n 6( 2 2 )0 3 tn tn tn 3( p n p n 1 ) 1 p n 2 pn tn
三次样条函数曲线的端点条件
(3)抛物端: 曲线的首尾两段S1(x) 和Sn-1(x)为抛物线。即曲线在 首尾两段曲线上二阶导数为常数。 y1" =y2" ,yn-1" =yn" S1" (x1)=2c1= S2" (x2)= 2c2 =>M1= M2 Sn-2" (xn-1)=2cn-2+6dn-2hn-2= Sn-1" (xn)= 2cn-1+6dn-1hn-1 =>Mn-1= Mn 得方程组: M1 - M2=0; λi Mi-1+2 Mi+μi Mi+1= Di,i=2,3,…,n-1; Mn-1 - Mn=0;
三 次 参 数 样 条 曲 线 推 导
对pi , pi1段有
3( pi1 pi ) 2 pi pi1 2 pi (t) pi pit [ ]t 2 ti1 ti1 ti1 2( pi pi1) pi pi1 3 [ 2 2 ]t 3 ti1 ti1 ti1 0 t ti1
连 续 的 三 次 参 数 样 条 曲 线
由条件, 曲线在pi 1应达到二阶连续 有 i 1 i i 2 B3 6 B4 ti 1 2 B3 即 pi [ti 2 2(ti 2 ti|1 ) ti 1 ] pi 1 pi 2 ti 1 ti 2 3( ( pi 2 pi 1 ) ( pi 1 pi )) ti 2 ti 1 i 1,, n 2
问题提出
有空间的n个点,p1,p2, p3,……,pn 要用一条曲线光滑连接
p2 p3 p1 p4
pn
解决问题的思路
插值 •三次样条曲线插值 •三次参数样条曲线插值
三次样条曲线-定义
对 于 给 定 的 n 个 型 值 点 Pi(xi,yi), 且 hi=xi+1-xi>0, i=1,2,…,n,若y=S(x)满足下列条件: (1) 在Pi(xi,yi)点上有yi=S(xi); (2) S(x)在[x1 , xn]上二阶连续可导; (3)在每个子区间[xi , xi+1]上,S(x)是x的三次多项式; 则称 S(x) 为过型值点的三次样条函数,由三次样条函 数构成的曲线称为三次样条曲线。
连 续 的 三 次 参 数 样 条 曲 线
ti1 ti2 令: B 3( ( pi2 pi1) ( pi1 pi )) ti2 ti1 有 pi i [ti2 2(ti2 ti|1) ti1] pi1 B i 1,, n 2 pi2
Di=6/(hi-1+hi) *[( yi+1-yi)/ hi-( yi-yi-1)/ hi-1]
λi+μi=1
(1)夹持端: 2 M1+ M2=6[( y2- y1)/ h1- y1']/ h1; λi Mi-1+2 Mi+μi Mi+1= Di,i=2,3,…,n-1; Mn-1+ 2Mn=6[ yn' -( 百度文库n- yn-1)/ hn-1]/ hn-1; (2)自由端: M1=0; λi Mi-1+2 Mi+μi Mi+1= Di,i=2,3,…,n-1; Mn=0; 3)抛物端: M1 - M2=0; λi Mi-1+2 Mi+μi Mi+1= Di,i=2,3,…,n-1; Mn-1 - Mn=0;
三次样条函数曲线的形式推导
(3)要求曲线在二阶连续可导,则有 Si' (xi+1)= Si+1' (xi+1) Si" (xi+1)= Si+1" (xi+1) 从而有 bi+2cihi+3di hi2= bi+1 2ci+6di hi=2ci+1 (求di) (4)令Mi=2ci; 则有: ai = y i ci=Mi/2 di=( Mi+1- Mi)/6 hi bi =( yi+1- yi)/ hi- hi(Mi/3+ Mi+1/6)
三次样条函数曲线的求解条件
已知: (1)n个数据点Pi(xi,yi),i=1,…,n (2)每一段都是三次的多项式函数曲线 (3)节点达到二阶连续 (4)两个端点的特性(固定端\抛物端\自由端) 根据给定点求每段曲线的具体表达式
三次样条函数曲线的形式推导
由定义可知在[xi , xi+1]上,Si(x)可写成: Si(x)=ai+bi(x-xi)+ci(x-xi)2+di(x-xi)3 ai, bi, ci, di为待定系数 (1)由于yi=Si(xi), Si(xi+1)= Si+1(xi+1)= yi+1, 有 yi = a i ai+bihi+cihi2+dihi3= yi+1(用于求bi) (2)由Si' (x)= bi+2ci(x-xi)+3di(x-xi)2 有 Si' (xi)= bi 由Si" (x)= 2ci+6di(x-xi) 有 Si" (xi)= 2ci
三次样条函数曲线的端点条件
(1)夹持端: 端点处一阶导数已知,即 S1' (x1)=y1' 亦即y1'= b1= ( y2- y1)/ h1- h1(M1/3+ M2/6) 2 M1+ M2=6[( y2- y1)/ h1- y1']/ h1 Sn-1' (xn)=yn' 亦即yn-1'= bn-1= ( yn- yn-1)/ hn-1- hn-1(Mn-1/3+ Mn/6) Mn-1+ 2Mn=6[ yn' -( yn- yn-1)/ hn-1]/ hn-1 得方程组为: 2 M1+ M2=6[( y2- y1)/ h1- y1']/ h1; λi Mi-1+2 Mi+μi Mi+1= Di,i=2,3,…,n-1; Mn-1+ 2Mn=6[ yn' -( yn- yn-1)/ hn-1]/ hn-1;
p1 p2
三 次 参 数 样 条 曲 线 推 导
p ( 0 ) p1 B1 p ( 0 ) B 2 p1 2 3 p ( t 2 ) p 2 B1 B 2 t 2 B 3 t 2 B4t 2 2 p ( t 2 ) B 2 2 B 3 t 2 3 B 4 t 2 p2 p2 3 ( p 2 p1 ) 2 p1 B3 2 t2 t2 t2 p2 2 ( p1 p 2 ) p1 B4 2 2 3 t2 t2 t2 从而有 : p2 2 3 ( p 2 p1 ) 2 p1 t [ ]t p ( t ) p1 p1 2 t2 t2 t2 p2 3 2 ( p1 p 2 ) p1 [ 2 2 ]t 3 t2 t2 t2
三次样条函数曲线的形式推导
从而有: ai-1 = yi-1 ci-1=Mi-1/2 di-1=( Mi- Mi-1)/6 hi-1 bi-1 =( yi- yi-1)/ hi-1- hi-1(Mi-1/3+ Mi/6) (5)由 Si-1' (xi)= Si' (xi) 有bi-1+2ci-1hi-1+3di-1 hi-12= bi 令:λi= hi-1/(hi-1+hi),μi= hi/(hi-1+hi) Di=6/(hi-1+hi)*[( yi+1-yi)/ hi-( yi-yi-1)/ hi-1] 可得:λi Mi-1+2 Mi+μi Mi+1= Di, 其中:λi+μi=1,i=2,3,…,n-1
三次样条函数曲线的求解方法
已知: (1)n个数据点 Pi(xi,yi),i=1,…,n (2) 每一段都是三次的多项 式函数曲线 (3)节点达到二阶连续 曲线: Si(x)=ai+bi(x-xi) +ci(x-xi)2+di(x-xi)3 Mi=2ci: ai = yi ci=Mi/2 di=( Mi+1- Mi)/6 hi bi =( yi+1- yi)/ hi - hi(Mi/3+ Mi+1/6)
三次参数样条曲线
求三次参数样条曲线的表达式 p(t)=B1+B2t+B3t2 +B4t3 0<=t<=tm (1)给点pi(i=1,…,n) (2)给端点条件 (3)解方程求各点切矢量; (4)计算各段系数(取ti+1为第i段直线段长) (5)根据参数给各段曲线
p2 p3 p1 p4 p5
三次样条函数曲线的端点条件 (2)自由端: 端点处曲线二阶导数为零 即S1" (x1)=y1"=0 , Sn-1" (xn)=yn"=0 亦即 S1" (x1)= 2c1=0;=>M1=0 Sn-1" (xn)=2cn-1+6dn-1hn-1=0;=> Mn=0 得方程组: M1=0; λi Mi-1+2 Mi+μi Mi+1= Di,i=2,3,…,n-1; Mn=0;
i
式中: p’i 第i点的切矢量为未知 数,(i=1,…,n) 求解n个未知数,要n个方程
连续的三次参数样条曲线端点条件
(1)夹持端 pn 已知 p1 方程为 : [ti2 pi Bi i 1,, n 2 2(ti2 ti|1) ti1] p i1 pi2
????
• OK?!
三次参数样条曲线
有空间的n个点,p1,p2, p3,……,pn 要用一条三次参数样条曲线插值
p2 p3 p1 p4
pn
三次参数样条曲线定义
三次参数样条曲线的表达式 p(t)=B1+B2t+B3t2 +B4t3 0<=t<=tm 在两点p1,p2之间定义一条该曲线(参数形 式) 令p1t=0; p2t=t2; 已知: p’1, p’2 代入方程可得方程系数B1\B2\B3 \B4
三 次 参 数 样 条 曲 线 端 点 条 件
( 2 )自由端 0 p n 0 已知 : p1 i 1时 : p2 3( p 2 p1 ) 2 p1 0 2 t2 t2 t2 3( p 2 p1 ) p2 2 p1 t2 i n 1时 1 p n 3( p n p n 1 ) 2 p n 2( ) 2 tn tn tn 1 p n 2 ( p n 1 p n ) p n 6( 2 2 )0 3 tn tn tn 3( p n p n 1 ) 1 p n 2 pn tn
三次样条函数曲线的端点条件
(3)抛物端: 曲线的首尾两段S1(x) 和Sn-1(x)为抛物线。即曲线在 首尾两段曲线上二阶导数为常数。 y1" =y2" ,yn-1" =yn" S1" (x1)=2c1= S2" (x2)= 2c2 =>M1= M2 Sn-2" (xn-1)=2cn-2+6dn-2hn-2= Sn-1" (xn)= 2cn-1+6dn-1hn-1 =>Mn-1= Mn 得方程组: M1 - M2=0; λi Mi-1+2 Mi+μi Mi+1= Di,i=2,3,…,n-1; Mn-1 - Mn=0;
三 次 参 数 样 条 曲 线 推 导
对pi , pi1段有
3( pi1 pi ) 2 pi pi1 2 pi (t) pi pit [ ]t 2 ti1 ti1 ti1 2( pi pi1) pi pi1 3 [ 2 2 ]t 3 ti1 ti1 ti1 0 t ti1
连 续 的 三 次 参 数 样 条 曲 线
由条件, 曲线在pi 1应达到二阶连续 有 i 1 i i 2 B3 6 B4 ti 1 2 B3 即 pi [ti 2 2(ti 2 ti|1 ) ti 1 ] pi 1 pi 2 ti 1 ti 2 3( ( pi 2 pi 1 ) ( pi 1 pi )) ti 2 ti 1 i 1,, n 2