999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Matlab用于動畫制作旋轉曲面設計

2016-01-13 07:51:44童德茂

童德茂,張 華

(阜陽職業技術學院 工程科技學院,安徽 阜陽 236031)

?

Matlab用于動畫制作旋轉曲面設計

童德茂,張華

(阜陽職業技術學院 工程科技學院,安徽 阜陽 236031)

摘要:旋轉曲面可以構造成現代工業中諸多產品形狀,選擇一種工程語言將旋轉曲面工件造型動態直觀演示出來是非常必要的。Matlab以矩陣作為數據操作的基本單位,擁有開放式可擴充環境、強大的繪圖功能和靈活的程序設計技巧,融合Matlab矩陣處理問題特點,列舉動畫制作旋轉曲面程序,以探究Matlab實現旋轉曲面動畫制作的完整過程。

關鍵詞:Matlab;旋轉曲面;動畫程序;幾何變換

Matlab以矩陣作為數據操作的基本單位,集成了圖形圖像處理、數值分析、矩陣運算、可視化和仿真等諸多強大功能的交互式計算機環境工程語言[1-2]。在Matlab諸多應用中,最能給學者們的研究帶來方便的是它的開發式可擴充環境和數據可視化應用,此外,人們還特別關注Matlab軟件在制作精確、形象的動畫方面的應用。在極限趨近研究中,我們已經探討了Matlab直觀動態地表示極限漸進過程動畫[3]。融合Matlab在矩陣運算中的特點,深層次探討Matlab的應用,使用axis,ho1d on和for...end等Matlab語句,人們可直接用Matlab獲得動畫繪制而發掘新的契合點[3]。如語句hold on是保證在同一坐標軸內完成畫圖,而for...end循環則是繪制動畫最為關鍵的語句,上述命令還僅僅是Matlab工具軟件中實現動畫制作的基本架構。為獲取內容豐富且生動的旋轉曲面動畫,要選取有效的數據采樣和切實可行的制作動畫方式方法。工程設計和曲面造型中普遍應用旋轉曲面,應用旋轉曲面可以廣泛制作現代工業產品形狀[4],因此,各領域工作者一直廣泛關注旋轉曲面的應用。動畫表現方式克服了傳統靜態視覺表現的不足,多種動畫表現方法也就相繼誕生,閆宇晗、常鑫分析在C#中用GDI實現圖形動態顯示[5]。本文探討Matlab用于繪制旋轉曲面動畫的形成過程。

1繪制旋轉曲面動畫研究

1.1繪制曲面矩陣的各列呈現旋轉曲面形成過程

選取一定形狀的曲線圍繞固定軸旋轉而構造成的曲面即為旋轉曲面[6]。在Matlab動畫設計制作旋轉曲面時,若能繪制出任一曲線在旋轉過程中各個位置產生的曲線,旋轉曲面生成過程將會被真實完整的展示出來。在幾何空間中,某一曲線繞固定軸旋轉產生在每個位置的系列曲線都對應著Matlab矩陣所描述旋轉曲面數據列,順次地畫出矩陣各列數據,則會生動呈現生成旋轉曲面過程的動畫。

例中a,b為常數,取a=15,b=2,編制Matlab的·M文件并運行,動態演示旋轉橢球面繪制過程。

程序的M文件如下:

clear;

a=15;

b=2;

t=0:pi/30:2*pi;

n=length(t);

y=15*cos(t);

z=2*sin(t);

x =0*ones(1,n);

plot3(x,y,z)

pause(1)

for i=0:pi/60:pi;

x=y.*sin(i);

y1=y.*cos(i) ;

plot3(x,y1,z )

pause(1)

grid on

hold on

view(-20,60)

end

hold off

圖形動畫結果如圖1所示。

圖1橢球面動畫形成二幅截圖

運行例1中的Matlab程序演示了橢圓繞Z軸旋轉而構成橢球面的形象直觀完整過程,運用動畫鮮明地展示了旋轉橢球面的生成和旋轉橢球面的本質[7]。以直線、圓、雙曲線、拋物線為例,分別編寫它們的·M程序文件,則可形象直觀動態地演示相應曲線繞固定軸(Z軸)旋轉生成旋轉曲面的完整過程。

盡管例1的程序比較簡單,但程序運行速度卻非常快,能清晰和直觀呈現旋轉曲面的具體形成過程。因運行程序過程中不能一一繪制出旋轉曲面生成中的各條母線,故繪制旋轉曲面是由有間隔的曲線構成的,展示的曲面動畫效果不太理想。即使設法增加繪制曲線的密集度,還是彌補不了繪制旋轉曲面的缺憾,但對形象和直觀實現一般的旋轉曲面演示還是有實用價值的。為了解決上述程序設計的缺憾,最有效的操作就是填實畫出的曲線間的間隙,在程序設計的實際操作上用surf()或mesh()函數畫旋轉曲面片替代plot3()畫旋轉曲線,就可以消除此類問題。

1.2選矩陣A中相鄰兩列A(:,i-1,i)繪制曲面片

在同一坐標系中,設計旋轉曲面程序時,按序把描述曲面矩陣的相鄰兩列數據點用surf()或mesh()函數以曲面片形式繪制出來,畫出的旋轉曲面形成過程的動畫將會更為生動形象真實。

例2在區間[-4;4;-4;4],作16z=x2+y2拋物線生成橢圓拋物面過程。

a=sqrt(3);

r=0:0.1:a;

t=0:0.1:2*pi;

[T,R]=meshgrid(t,r);

X=4*cos(T).*R;

Y=4*sin(T).*R;

Z=2*ones(size(T)).*R.^2;

axis([-10,10,-10,10,0,10]);

hold on;

n=size(Z,2);

for i=2:n

surf(X(:,i-1:i),Y(:,i-1:i),Z(:,i-1:i));

drawnow;

pause(0.2);

end

結果如圖2所示圖形動畫。

圖2動畫形成旋轉拋物曲面片二幅截圖

對比圖1和圖2,明顯看出旋轉曲面片繪制的圖2視覺效果的動畫更真實和完美。因A (:,i-1:i)和A(:,[i-1:i])皆能描述曲面矩陣A中相鄰兩列[8],將例2中surf(X(:,i-1:i),Y(:,i-1:i),Z(:,i-1:i))換成 surf(X(:,[i-1,i]),Y(:,[i-1,i]),Z(:,[i-1,i])),仍達到同樣的效果。

1.3NaN實現旋轉曲面動畫效果

Matlab中NaN是非數值特殊量,一般情況下,NaN是在有正負無窮大參與的加減、乘法、除法的0/0、∞/∞等式中產生。Matlab中的ZaZ常數表示是一些不可用數據。若將曲面矩陣數據的某一部分用NaN描述,則會裁剪函數值為ZaZ的部分,進而將在曲面上形成孔洞效果[9]。將旋轉曲面矩陣的第i列后的各列均賦值為NaN,順序繪制圖形,得到圖3所示的有助于直觀認識工業產品形狀的旋轉曲面動畫效果。

曲線為25(x2+y2)-16z2=400動畫程序M文件如下:

z=-15:0.1:15;

y=4*sqrt( 1+z.^2 /25);

[x1,y1,z1]=cylinder(y,40);

z1=15.*z1-7.5;

axis([-20,20,-20,20,-10,10]);

hold on;

n=size(z1,2);

for i=1:n;

z11=z1

z11(:,i+1:n)=NaN

mesh(x1,y1,z11)

drawnow

pause(0.2)

end

圖形動畫如圖3所示。

圖3NaN繪制旋轉拋物面二幅截圖

e=0:0.1:10;

h=sqrt(3*e);

[a,b,c]=cylinder(h,100);

c1=3*c+1;

axis([-10,10,-10,10,-5,5]);

hold on;

n=size(c1,2);

for i=1:n;

c11=c1;

c11(:,i+1:n)=NaN;

mesh(a,b,c11);

mesh(a,b,-c11);

drawnow;

pause(0.2);

end

圖形動畫結果如圖4所示。

圖4旋轉雙曲拋物動畫過程截圖

Inf同NaN一樣也是無窮大量,繪圖時函數值為inf這些數據點的部分也不顯示,用inf代替例4程序中的NaN,同樣達到實現旋轉曲面形成的動畫效果。

例5修改實例4程序為:

e=0:0.1:10;

h=sqrt(3*e);

[a,b,c]=cylinder(h,100);

c1=3*c+1;

axis([-10,10,-10,10,-5,5]);

hold on;

n=size(c1,2);

for i=1:n;

c11=c1;

c11(:,i+1:n)=inf;

mesh(a,b,c11);

mesh(a,b,-c11);

drawnow;

pause(0.2);

end

圖形動畫結果如圖4所示。

2高層指令生成動態圖形

利用Matlab生成旋轉曲面動畫有助于直觀認識工業產品形狀,我們還可以使用Matlab“高層”圖形中的彗星軌線指令方便地產生圖形及色彩動態變化效果[10]。

例6實現衛星返回地球的運動軌跡示意動態演示。其程序M文件如下:

shg;

R0=1;

a=12*R0;

b=9*R0;

T0=2*pi;

T=5*T0;

dt=pi/100;

t=[0:dt:T]';

f=sqrt(a^2-b^2)

;th=12.5*pi/180;

E=exp(-t/20);

x=E.*(a*cos(t)-f);

y=E.*(b*cos(th)*sin(t));

z=E.*(b*sin(th)*sin(t));

plot3(x,y,z,'g');

[X,Y,Z]=sphere(30);

X=R0*X;

Y=R0*Y;

Z=R0*Z;

grid on;

hold on;

surf(X,Y,Z)

shading interp

x1=-18*R0;

x2=6*R0;

y1=-12*R0;

y2=12*R0;

z1=-6*R0;

z2=6*R0;

axis([x1,x2,y1,y2,z1,z2])

view([133 65])

comet3(x,y,z,0.02)

hold off

圖5衛星返回地球的運動軌跡示意

圖形動畫結果如圖5所示。

3結束語

本文根據Matlab處理數據的特點,重點以動畫演示繪制旋轉曲線、曲面片、給曲面矩陣賦值NaN或inf實現旋轉曲面設計為例,完整動態地演示旋轉曲面形成過程,Matlab生成旋轉曲面動畫表現方式克服了傳統靜態視覺表現的不足。例題中實現旋轉曲面動畫制作對于其它曲面動畫作圖也具有一定參考和指導作用。為方便今后直接運行使用,還可在適當gui交互界面中嵌入例題的程序,或將其保存為m文件或m函數。

參考文獻:

[1]葛哲學.精通Matlab [M].北京:電子工業出版社,2008:126-147.

[2]向修棟,付云芝. 在matlab中實現旋轉曲面的動畫設計[J].計算機技術與發展,2011(3):53- 55.

[3]童德茂.探討Matlab在高職《高等數學》教學中的應用[J].阜陽師范學院學報(自然科學版), 2010(3):79-82.

[4]張先波,楊文穎,宋來忠,等.給定主曲率函數的旋轉曲面設計[J].計算機工程與設計,2009(4):1030-1035.

[5]閆宇晗,常鑫.在C#中用GDI實現圖形動態顯示[J].計算機技術與發展,2006,16(12):117-119.

[6]劉衛國.Matlab程序設計與應用[M].北京:高等教育出版社,2006:56-100.

[7]趙亞男,牛言濤.MATLAB在解析幾何教學中的應用[J].長春大學學報,2014(4):54-58.

[8]胡華.用Matlab解決數學分析中的圖形問題[J].西南民族大學學報,2003,29( 6):766-771.

[9]段俊生,安建業,徐立.MATLAB曲面繪制中的挖補方法[J].大學數學,2006,22( 4):36-39.

[10]張志涌.精通Matlab R2011a[M].第二版.北京:北京航空航天大學出版社,2012:392-397.

[10]陳素根.Matlab在“計算機圖形學”教學中的應用[J].安慶師范學院學報(自然科學版), 2014(3):131-134.

Designs of Matlab to Make Animation of Revolution Surface

TONG De-mao,ZHANG Hua

(Department of Engineering Technology, Fuyang Vocational and Technical College, Fuyang 236031, China)

Abstract:Many product shapes can be generated by the rotating surface in modem industry. It is very necessary to choose a project way to surface of revolution workpiece modelling dynamic visual presentation. Matlab has an open extensible environment and strong drawing-graphics function and flexible program design skills. Combining with the characteristics of the matrix of dealing with the problem in matlab and using the matrix as the basic unit of data operation, we explore the rotation surface integrity of the animation process.

Key words:matlab, rotation surface, animation program, geometry

文章編號:1007-4260(2015)02-0125-05

中圖分類號:TP312

文獻標識碼:A

作者簡介:童德茂,男,安徽金寨人,碩士,阜陽職業技術學院工程科技學院副教授,研究方向為Matlab圖形圖像處理、數值計算。

基金項目:安徽省教育振興計劃項目(2013-86)和安徽省質量工程項目(2014jxtd059)。

收稿日期:2014-12-25

主站蜘蛛池模板: 亚洲国产中文精品va在线播放| 色视频久久| 在线无码九区| 亚洲有码在线播放| 四虎影视无码永久免费观看| 国产福利一区在线| 丰满少妇αⅴ无码区| 福利在线不卡一区| 国产超碰在线观看| 久久久久亚洲AV成人人电影软件 | 五月婷婷亚洲综合| 国产亚卅精品无码| 欧美一级特黄aaaaaa在线看片| 国产精品亚洲综合久久小说| 国产大片喷水在线在线视频| 亚洲综合九九| 最新亚洲人成无码网站欣赏网| 欧洲亚洲欧美国产日本高清| 国产欧美专区在线观看| 中文字幕人成人乱码亚洲电影| 国产男人天堂| 久久国产精品麻豆系列| 中日韩一区二区三区中文免费视频| 亚洲精品成人片在线观看 | 国产色爱av资源综合区| 国产成熟女人性满足视频| 亚洲国产成人精品无码区性色| 欧美狠狠干| 成人福利在线免费观看| 9久久伊人精品综合| 妇女自拍偷自拍亚洲精品| 欧美第二区| 亚洲毛片一级带毛片基地| 久久精品中文字幕少妇| 在线观看欧美精品二区| 永久免费精品视频| 日韩黄色在线| 国产色图在线观看| 欧美翘臀一区二区三区| 国产成人超碰无码| 亚洲日韩国产精品综合在线观看 | 亚洲成人手机在线| 国产主播福利在线观看| 色综合久久88色综合天天提莫| 国产美女一级毛片| 国产AV毛片| 91欧美亚洲国产五月天| 国产精品露脸视频| 国产亚洲视频中文字幕视频| 午夜国产不卡在线观看视频| 欧亚日韩Av| 国产剧情一区二区| 欧美在线视频a| 国产亚洲视频播放9000| 四虎成人在线视频| 午夜福利亚洲精品| 国产一区二区三区在线观看免费| 国产精品福利尤物youwu| 欧美午夜久久| 亚洲第一极品精品无码| 九色综合视频网| 毛片久久久| a级毛片网| 欧美日韩精品一区二区视频| 国内视频精品| 中文字幕在线观| 91av国产在线| 亚洲午夜国产精品无卡| 人妻丰满熟妇αv无码| 中文一级毛片| 四虎国产精品永久一区| jizz在线免费播放| 无码在线激情片| 色香蕉网站| 伊人久久精品无码麻豆精品 | 亚洲VA中文字幕| 99人体免费视频| 波多野结衣一区二区三区88| 国产精品嫩草影院av| 国内熟女少妇一线天| 亚洲AV无码精品无码久久蜜桃| 性欧美在线|