Matlab编程计算几何

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LIU Zhi—ping,SHI Lin—ying (School of Science,Huaihai Institute of Technology,Lianyungang 222005)
Abstract:Based on the importance of computer aided geometric design and the wide application of Matlab,we discussed the possibility of using Matlab in computer aided geometric design.Because Matlab uses complex matrix as its basic unit.we provided the matrix form of the Bezier curve and tensor product Bezier surface,and presented the ways to achieve them by using Matlab.On such a basis,we obtained the algorithm,made feasible programs and demonstrated them by concrete examples.Such a study aims at promoting the realization of CAGD toolbox by using Matlab. Key words:computer aided geometric design(CAGD);free-form curve(surface);Matlab
I二l “
矿” ‰;‰




。(3)
?:‰




万方数据
30
淮海工学院学报(自然科学版J
其中M=[m。]。¨m。+。,为M+l阶方阵,N一 [“,]。。,。+。,为n-4-l阶方阵。
肌。一c~·,7。(7)({),“,一c一·y’(n,八ji)。
(4)
式(3)表明Bezier曲面是由两个参数方向“和口
基于式(1)和式(2),得到如下算法。 算法1 输入:控制顶点P。,Pl'.”,P。,其中P。(o≤i≤
竹)既可以是二维空间中的点P。(五,Y,),也可以是三 维空间中的点P,(z,,Y。,z,)。
输出:n次Bezier曲线c(r)的图形。 步骤1:连接各个控制顶点生成控制多边形。 步骤2:利用式(2)生成过渡矩阵M。 步骤3:根据式(1)生成规次Bezier曲线C(£),若 P,为二维平面点,则c(£)为平面曲线;若P,为三维 空间点,则c(£)为空间曲线。 算法实例1 绘制5次Bezier曲线,其控制顶点 分别为P。一(1,1),P,一(2,4),P2一(3,o),P。一
第1 7卷第4期 2008年12月
淮海工学院学报f自然科’}:版)
V01.1 7 No.4
Journal of Huaihai Institute of Technology(Natural,Science Edition)Dec.2008
文章编号:1672—6685(2008)04—0028—03
万方数据
2002.
E3]刘志平,王仁宏.三角Bezier曲面和四边Bezier曲面之 间的相互转化[J].数学研究与评论,2006,26(3):525—
530. [4]MARCO A.A fast and accurate algorithm for solving
Bernstein_Vandermonde linear systems[J].Linear A卜
(4,3),P。=(5,一1),P5一(6,O)。
由算法1,笔者使用Matlab编程解决上述问题, 关键点是生成过渡矩阵M6。。,具体生成过渡矩阵的 Matlab语句为:
for i一0:n for j一0:n M(i+1,j+1)一(--1)‘(j—i)*mybinom(n,
j)*mybinom(j,i); end
Toolbox)”,我国学者薛定字开发的“反馈控制系统 分析与设计工具箱(CtrlLAB)”Ⅲ。本文就CAGD 常用的Bezier曲线曲面给出具体的算法和实用的 程序,希望能够推动Matlab的CAGD专业工具箱 的产生。
1 Bezier曲线的矩阵表示形式及其 Matlab实现
给定竹次Bezier曲线c(£)=∑p,B。(£),其中0
图1 控制顶点及控制多边形 Fig.1 Control points and control polygon
0 5 0 5 0 5 0 5 O 5
们”如拍加¨加吣∞0∽
图2 5次Bezier曲线 Fig.2 Qo|ntic Bezier cBrve
有了Bezier曲线的生成程序,就可进一步考虑 Bezier曲线的其它问题,如两条Bezier曲线的光滑 连接,满足一定连续性条件的过渡曲线的构造等。
gebra and Its Applications,2007.422(2):616-628.
[5]施法中.计算机辅助几何设计与非均匀有理B样条 [M].北京:高等教育出版社,2001.
[6]郑阿奇.MATLAB实用教程[M].北京:电子工业出版 社,2004.
[7]MONERDE J.On harmonic and biharmonie Bezier sur— faee[J].Computer Aided Geometric Design,2004,2l
参考文献: [1] 薛定宇.控制系统计算机辅助设计——MATLAB语言
与应用[M].2版.北京:清华大学出版社.2006. [2] FARIN G.Curves and Surfaces for CAGD:a Pratical
Guid Fifth Edition[M].San Diego:Academic press,
end
M—M(1:n+1,1:n+1); 其中调用函数mybinom(n,i)是为了计算组合数
(?),计算得
M6×6 2
5 .






K_K






OO)) _∞q№。。0,
。川∞q。 。 圳均_。
进而可以生成所求的Bezier曲线,如图l和图2。
40 35 3O 25 20 15 1O 05 0O O5 l0
(7):697—715.
[83 G()I,DMAN R.Multisided arrays of control points for multisided Bezier patches[J].Computer Aided Geomet—
ric Design,2004,2l(3):243—261.
(责任编辑:吉美丽)
i=0
收稿日期:2008—04—21 l修订日期:2008—09—15 基金项目:淮海工学院自然科学基金资助项目(Z200601 4) 作者简介:刘志平(1 979一).男.山东烟台人,淮海工学院理学院讲师,硕上.主要从事计算机辅助几何设计领域的研究.(E mail)liu—zhi—
ping@163.COrn。
Bezier曲面见图4。
图3控制网格 Fig.3 Control net
图4 5X 5次Bezier曲面 Fig.4 Biquintic Bezier surface
3 小结
本文以Bezier曲线曲面的矩阵表示形式为基 础,形成了可实现的算法和Matlab程序,并以具体 实例的形式加以说明。进一步,也可以用Matlab实 现对B样条曲线曲面、NURBS曲线曲面的绘制与 计算,笔者的目标是以完整、简洁的Matlab函数集 实现对CAGD领域的分析与设计,形成Matlab的 CAGD专业工具箱,这样必可以在很大程度上推动 CAGD的教学和科研工作。
万方数据
第4期
刘志平等:Matlab在计算机辅助几何设计领域的应用
29
一鼎“1一f)一是以次Bemst ≤t≤l,P,(O≤i≤”)表示"+1个控制顶点,B。,(£) eln多项式。
上述Bezier曲线也可表示为矩阵形式眨

¨
c(£)一[m P1…户。][mi](㈣m}
u (1)
m。一c叫…(瓢)o ㈦
0 引言
计算机辅助几何设计(CAGD)是计算机图形学 的重要部分,它在工业设计中有着重要的应用。传 统的CAGD程序一般是用C或C++语言编写,如 OpenGL图形包,但是要想使用OpenGL就必须先 熟悉VC++环境,这是一个相当艰苦的过程。近 几年,随着Matlab语言的普及,以及Matlab易学好 懂且功能强大的特点,许多领域的专家学者相继推 出了Matlab专业工具箱,如John Little和Loren shure开发的“信号处理工具箱(Signal Processing
Matlab在计算机辅助几何设计领域的应用
刘志平,石林英
(淮海工学院理学院.江苏连云港222005)
摘要:基于计算机辅助几何设计的重要性和Matlab语言的普及,探讨了Matlab在计算机辅助几 何设计领域中的应用问题。由于Matlab的基本编程单元是复数矩阵,因此首先归纳出了一维
Bezier曲线和二维张量积型Bezier曲面的矩阵表示形式,在此基础上形成算法,编写了可实现的程
i0 , 2

Z ,

i2 ,





4,
4 ,
5 , 2 , 3 ^^
舢;m S
0o3
1o4
2o 5
;l ]_^3 o 5


5 o心 3
. CJ






K《K

M=N=




O OO)) 叫∞ቤተ መጻሕፍቲ ባይዱ如。oO,) 。q如。 1。Ⅷ加_。
当然,一般情况下M和N也可以是不同维数的矩
阵。绘制的控制网格见图3,符合要求的双5次
2 Bezier曲面的矩阵表示形式及其 Matlab实现
给定m×n次Bezier曲面s(“,u)一
∑∑P。B…(“)B。(口),0≤甜,刀≤1,P。称为曲
i一0 J一0
面的控制顶点,B…(“)和B,,。(u)分别是m次和行 次Bernstein多项式。上述Bezier曲面也可以表示为 如下的矩阵形式[1]:
上的Bezier啮线做张量积生成的,故可得类似算法。 算法2
输入:控制顶点P。,其中0≤i≤m,0≤j≤,,。 输出:m×72次Bezier曲面s(“,u)的图形。 步骤1:依次连接各个控制顶点生成控制网格。 步骤2:利用式(4)生成过渡矩阵M和N。
步骤3:根据式(3)生成m×n次Bezier曲面 S(u,。)的表达式,绘制S(u,u)的图形。
序,随后以具体实例的形式给予验证,最终得到了满足要求的曲线和曲面,以期能够推动Matlab的
CAGD专业工具箱的产生。
关键词:计算机辅助几何设计;自由曲线(曲面);Matlab
中图分类号:0241.5
文献标识码:A
Application of Matlab in Computer Aided Geometric Design
算法实例2 绘制一张5×5次的Bezier曲面, 其由各控制顶点组成的控制点阵为
声0

(O,0,1) (0.1.2)
(1,0.2) (2,0,3) (3.0,3) (4.0.2)
(1,1,3) (2,1,4) (3,1,4) (4,1,3)
(5,0,1) (5,1,2)
在此例中,
rIlIL p “;5 O
相关文档
最新文档