基于B_zier曲面的车身A级曲面反求算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第50卷第4期
农业装备与车辆工程AGRICULTURAL EQUIPMENT&VEHICLE ENGINEERING
第50卷第4期Vol.50No.42012年4月Apr.2012
doi:10.3969/j.issn.1673-3142.2012.04.007
基于Bézier曲面的车身A级曲面反求算法
尹永福,徐家川,李迪
(255049山东省淄博市,山东理工大学交通与车辆工程学院)
[摘要]传统的Bézier曲面控制顶点的反求算法在型值点的参数值为0时,计算公式中会出现分母为0的情况,
导致程序的计算结果不准确。通过对型值点的参数化值进行分类讨论,将参数值为0的型值点单独处理,改进
了m×n次Bézier曲面控制顶点的反求算法。实例验证,改进后的算法得出的控制顶点结果准确,生成的曲面满
足A级曲面的光顺性要求。
[关键词]车身A级曲面;Bézier曲面;控制顶点;算法
[中图分类号]TP391[文献标志码]A[文章编号]1673-3142(2012)04-0027-04
Inverse Algorithm for Autobody Class A Surface Based on Bézier Surface
YIN Yong-fu,XU Jia-chuan,LI Di
(School of Transportation and Vehicle Engineering,Shandong University of Technology,Zibo City,Shandong Province255049,China)[Abstract]When the parameter values of the characteristic points are equal to zero,a zero denominator will appear in the design formulas,then the calculation of traditional inverse algorithm for Bézier surface vertices will be inaccurate.Through discussing the parametric value of the characteristic points,the characteristic points that parameter values are equal to zero were treated separately,and the inverse algorithm for time Bézier surface vertices was improved.The running of practical example proves that the surface vertices generated by improved algorithm were accurate and the smoothness of surface with improved algorithm satisfied the requirement of Class A surface.
[Keywords]autobody Class A surface;Bézier surface;vertices;algorithm
0引言
A级曲面是车身上要求极高的一类曲面,由于Bézier曲面具有优良的控制性质,已被广泛应用于车身A级曲面造型系统中[1]。以往多数Bézier 曲面的算法都是基于正向设计,即通过给定的控制顶点绘制Bézier曲面[2,3]。当应用Bézier曲面方法进行逆向曲面造型时,首先要根据给定的型值点反求出Bézier曲面的控制顶点,然后再进行正向设计得到Bézier曲面。
对于一个m×n次Bézier曲面,现有的反求Bézier曲面控制顶点的方法主要是利用最小二乘拟合法将Bézier曲线拟合算法扩展到曲面上[4]。当m、n很大时,该方法求解Bézier曲面控制点会遇到计算量大,过程繁琐等问题[5],1992年王天军提出了一种反求Bézier曲面控制顶点的解析算法,在对该算法进行编程计算时发现在其推导过程中出现分母为0的情况,导致程序无法给出正确结果。本文通过对型值点参数值进行分类讨论,对参数值为0的型值点进行单独处理,从而规避了上述问题的产生。结果表明改进后的算法可行有效。1问题的提出
对给定呈拓扑矩形阵列的数据点阵P ij,i=0,1,…m;j=0,1,…n,把每排数据点的相邻两点用直线段连接,就组成一个在拓扑意义上的矩形网格。曲面逆向设计要求求解一个曲面插值于所给定的(m+1)×(n+1)个矩形网格顶点,即求解一个m×n次Bézier曲面片[6]
P ij=p(u,v)=
m
i=0
Σn
j=0
Σb ij B im(u)B jn(v),
0≤u,v≤1。(1)
其中B in(t)=C i
n
t i(1-t)n-i(0≤i≤n)为伯恩斯坦基函数;b ij(0≤i≤m,0≤j≤n)为所求Bézier曲面的控制顶点。
2反求控制顶点的方法
要求解Bézier曲面的控制顶点,首先必须对型
基金项目:山东省自然科学基金(ZR2010EL002)。收稿日期:2011-10-25
农业装备与车辆工程
2012年
值点p ij (0≤i ≤m ,0≤j ≤n )实行参数化。刘鼎元在文献[4]中建议采用“双向规范积累弦长参数化”方法定义型值点参数,即
u ij =
0i =0
i -1k =0Σ
p kj p k+1,j
/m -1k =0
Σ
p kj p k+1,j ,i ≠≠≠≠≠≠≠
≠≠≠≠≠≠≠0
(2)
v ij =
j=0
j -1k =0Σ
p ik p i ,k+1
/
n -1
k =0
Σ
p ik p i ,k+1,j ≠≠≠≠≠≠≠
≠≠≠≠≠≠≠
(3)
其中p ik p i 1,k 1———两型值点p i ,k 和p i 1,k 1之间的
距离。
考虑到在工程实践中型值点的分布是比较均
匀的,利用(2)式和(3)式,我们定义型值点p i ,j 所对应的参数(u i ,v j )(0≤i ≤m ,0≤j ≤n )为
u i =n
k =0Σu ik /(n+1)
v j =m
k =0
Σv kj /(m+1≠≠≠≠≠≠≠≠≠≠≠≠≠≠≠
)
(4)
由(1)式和(4)式,王天军[5]
给出了求解Bézier 曲面控制顶点的插值条件
m
k =0Σn
k =0
Σb
kl
B km (u i )B ln (v j )=P ij ,
i =0,1,…m ;
j =0,1,…n
(5)
由(2)~(4)式,可以得出u 0=0,v 0=0,但是王[5]
在对(5)式简化时只对u 0,v 0出现在分母上的情况做了特别规定,忽略了在转化为矩阵形式时,v 0n ,
u 0m 也出现在分母的位置上,进而使所求的控制顶点不能满足要求。因此,如何处理参数为0的情况
就成为算法成功与否的关键。
这里,我们对(5)式参数为0的情况进行分类讨论:
(1)当i =0,j =0时,u 0=0,v 0=0,由(5)式可得
b 00=P 00;
(2)当i =0;j =1,2,…n 时,u 0=0,由伯恩斯坦基函数的定义我们可知,当k ≠0时,B km (u 0)=0,从而由(5)式可得n
l =0Σb 0l B ln (v j )=P 0j ;
(3)当j =0;i =1,2,…m 时,v 0=0,同理,当l ≠0时,B ln (v 0)=0由(5)式可得m
k =0Σb k0B km (u i )=P i0。
综上所述,并令B 赞in
(t )=t i
(1-t )n-i
,(0≤i ≤n ),则(5)式可变为
b 00=P 00
i =0;j =0
n l =0ΣC n l
b 0l B 赞ln (v j )=P 0j
i =0;j =1,2,…n m k =0ΣC
m k b k 0B 赞km (u i )=P i0
j =0;i =1,2,…m
m k=0Σn
l
=0
ΣC n
l
C m k
b kl
B
赞km
(u i )B 赞ln (v j )=P ij
i=1,2,…m ;j=1,2,…≠
≠
≠≠≠≠≠≠≠≠
≠≠≠≠≠≠≠≠
≠≠≠≠≠≠≠≠
≠n (6)
其中
C n r =n !/r !(n-r )!(0≤r ≤n )。
接下来,我们将(6)式中的各式分别转化成相
应的矩阵形式,并将系数矩阵转化为
Vandermonde 矩阵,从而得到如下求解控制顶点
的公式。
(1)当i =0;j =0时,b 00=P 00。
(7)
(2)当i =0;j =1,2,…n 时,
b 赞0n
b 赞0,n -1b 赞01
m m m m m m m m m m m m m m m m m m
m
m m m m m m m m m m m m m m m m m
=X -1P 01/v 1n -P 00·x 1
n
P 02/v 2n
-P 00·x 2n
P 0n /v n n
-P 00·x n
n
m m m m m m m m m m m m m m m m m m
m
m m m m m m m m m m m m m m m m m
。(8)
其中
b 0j =b 赞0j /C n
j (j =1,2,…n );x j =1/v j -1,X =1x 1x 12…x 1n -11x 2x 22…x 2n -1
1x n x n 2…x n n -m
m m m m m m m m m m m m m m m
m m m m m m m m m m m m m m m m
1
。
(3)当j =0;i =1,2,…m 时,
b 赞m0b 赞m-1,0
b 赞10
m m m m m m m m m m m m m m m m m m m
m
m m m m m m m m m m m m m m m m m m
=Y
-1
P 10/u 1m
-P 00·y 1m
P 20/u 2m
-P 00·y 2
m
P m 0/u m m -P 00·y m
m
m m m m m m m m m m m m m m m m m m
m
m m m m m m m m m m m m m m m m m
。(9)
其中
b i 0=b 赞i 0/C m i (i=1,2,…m ),y i =1/u i
-1,Y =
1y 1y 12…y 1m -1
1y 2y 22
…y 2
m -1
1y m y m 2…y m
m -1
m
m m m m m m m m m m m m m m m m m
m m m m m m m m m m m m m m m m m m
。
……
…
…
…
…
…
…
…
…
…
…
28