第04章-Maple的2D動畫制作_第1頁
第04章-Maple的2D動畫制作_第2頁
第04章-Maple的2D動畫制作_第3頁
第04章-Maple的2D動畫制作_第4頁
第04章-Maple的2D動畫制作_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第1編第4章第1編第4章2D動畫及其數(shù)據(jù)構(gòu)造 Maple的圖形動畫技術(shù)——用Maple(6~9)制作數(shù)學(xué)動畫課件 2D動畫及其數(shù)據(jù)構(gòu)造4-01~04plots[animatecurve])動畫with(plots):animatecurve(sin(x),x=-Pi..Pi,frames=18,view=[-3.5..3.5,-1.2..1.2]);4.1使用菜單命令播放動畫〔右側(cè)是放大了的命令菜單〕4.2動畫的第一幀animatecurve(sin(x),x=-Pi..Pi,frames=18,view=[-3.5..3.5,-1.2..1.2]);在執(zhí)行動畫命令之后再執(zhí)行命令display(animatecurve(sin(x),x=-Pi..Pi,frames=18,view=[-3.5..3.5,-1.2..1.2]));就確定可以得到那個動畫的連環(huán)畫方式顯示圖4.36幀連環(huán)畫〔array顯示〕不過請留意,假設(shè)讀者在Maple中執(zhí)行了命令display(animatecurve(sin(x),x=-Pi..Pi,frames=6,view=[-3.5..3.5,-1.2..1.2]));得到的結(jié)果將與這里看到的有所不同。這里實際使用的命令是display(animatecurve(sin(x),x=-Pi..Pi,thickness=3,frames=6,view=[-3.5..3.5,-1.2..1.2]));114.4animatecurve動畫4-05procanimatecurve動畫with(plots):F:=x->16-x^2:animatecurve(F,-4..4,color=black,thickness=3,frames=12);4.5procanimatecurve動畫4-06animatecurve動畫下例是描繪參數(shù)方程給出的軌跡曲線動畫〔李薩如曲線。animatecurve([sin(2*x),cos(3*x),x=0..2*Pi],numpoints=72,frames=9,scaling=constrained,thickness=3);4.6animatecurve動畫圖4-07 極坐標(biāo)系中的animatecurve動畫2第1編第4章第1編第4章2D動畫及其數(shù)據(jù)構(gòu)造 Maple的圖形動畫技術(shù)——用Maple(6~9)制作數(shù)學(xué)動畫課件 33下面一例說明,animatecurve動畫命令也可承受坐標(biāo)轉(zhuǎn)換設(shè)置選項。animatecurve([sin(3*x),x,x=0..Pi],coords=polar,numpoints=72,frames=9,thickness=3,scaling=constrained);圖4.7 極坐標(biāo)系中的animatecurve動畫圖4-08 兩曲線的set的animatecurve動畫animatecurve({1/12*x^2,sin(x)},x=-4..4,color=blue,thickness=3,frames=9);圖4.8 兩曲線的set的animatecurve動畫圖4-09 兩條參數(shù)曲線的set的animatecurve動畫with(plots):animatecurve({[sin(3*x),x,x=0..Pi],[x,sin(x),x=-Pi..Pi]},numpoints=72,thickness=3,scaling=constrained);圖4.9 兩條參數(shù)曲線的set的animatecurve動畫4-10~15plots[animate]動畫4-10animate命令后在本組末尾消滅的動畫畫面Maple的工作頁里某個執(zhí)行組當(dāng)中,寫入兩行命令:with(plots):animate(sin(x)+t,x=-Pi..Pi,t=0..2);或者是與之等效的另一行命令plots[animate](sin(x)+t,x=-Pi..Pi,t=0..2);4.4.10animate命令后在本組末尾消滅的動畫畫面4-11animate動畫函數(shù)animate可以應(yīng)用于多種多樣的對象,也有一些處理技巧。運用這些技巧,就可第1編第4章第1編第4章2D動畫及其數(shù)據(jù)構(gòu)造 Maple的圖形動畫技術(shù)——用Maple(6~9)制作數(shù)學(xué)動畫課件 141455得到更加多姿多彩的數(shù)學(xué)動畫。用以下三個命題及其附屬實例,分別說明。請看下面的實例。animate({(x-3)^3/u,2+sin(u/2*x),(x+u/4)^2},x=-8..4*Pi,u=1..16,color=blue,thickness=3,view=[-8..15,-1..4],frames=8);此動畫的連環(huán)畫顯示圖如下。4.11animate動畫此例說明,animate命令可以承受多個F(x,t)所組成的集合。在本例中這個函數(shù)集合,由三個二元函數(shù)組成。其中,F(xiàn)1(x,u)=(x-3)^3/u,F2(x,u)=2+sin(u/2*x),F3(x,u)=(x+u/4)^2.4-12animate動畫下面的實例說明,animate動畫命令可以承受參數(shù)方程,制作表現(xiàn)參數(shù)曲線變化過程的動畫。此動畫的連環(huán)畫顯示圖如下。animate([sin(x*t),x,x=-4..4],t=1..4,numpoints=72,frames=6,thickness=3);4.12animate動畫4-13animate動畫下一實例也是表現(xiàn)一條參數(shù)數(shù)曲線變化過程的動畫,通過設(shè)置選項coords=polar使用了極坐標(biāo)系。animate([t*sin(x+t/3),t*x,x=0..2*Pi],t=1..3,coords=polar,numpoints=144,frames=6,scaling=constrained,thickness=3);此時x變化范圍不再與圖面水平顯示范圍相關(guān)。動畫的連環(huán)畫顯示圖是:4.13animate動畫圖4-14 多條參數(shù)曲線的animate動畫下面的實例中,有兩條參數(shù)曲線在各自變化:一條曲線是膨脹著的圓周,圓周半徑在增大,由24;另一條是頻率變大的正弦曲線,直立的正弦曲線在轉(zhuǎn)變自己的角頻率系2到4是共用的。with(plots):animate({[t*sin(x),t*cos(x),x=-Pi..Pi],[sin(x*t),x,x=-4..4]},t=2..4,view=[-4..4,-5..5],scaling=constrained,color=blue,thickness=3,axes=frame);圖4.14 多條參數(shù)曲線的animate動畫圖4-15 楓葉逐步放大的animate動畫一片楓樹葉逐步放大過程的數(shù)學(xué)動畫,這楓葉是用參數(shù)曲線畫出的。s:=x->100/(100+(x-Pi/2)^8):r:=x->s(x)*(2-sin(7*x)-cos(30*x)/2):第1編第4章第1編第4章2D動畫及其數(shù)據(jù)構(gòu)造 Maple的圖形動畫技術(shù)——用Maple(6~9)制作數(shù)學(xué)動畫課件 animate([t*r(x)/2,x,x=-Pi/2..3/2*Pi],t=1..3,numpoints=120,coords=polar,axes=box,color=blue,view=[-5..5,-1..5.5],thickness=3,frames=8);圖4.15 楓葉逐步放大的animate動畫特點有二:一是參數(shù)方程經(jīng)過復(fù)合運算;二是每個函數(shù)都是用算符記法定義的。假設(shè)改換為如下形式,效果是一樣的。f:=(x,t)->t*((100/(100+(x-Pi/2)^8))*(2-sin(7*x)-cos(30*x)/2))/2:g:=(x,t)->x:animate([f,g,-Pi/2..3/2*Pi],1..3,numpoints=120,coords=polar,axes=box,color=blue,view=[-5..5,-1..5.5],thickness=3,frames=8);圖4-16~21 版本的plots[aniamte]動畫圖4-16~17 基于plot圖形的版animate動畫〔首幀〕with(plots):圖4.16 圖4.16 基于plot圖形的版animate動畫〔首幀〕7第1編第4章第1編第4章2D動畫及其數(shù)據(jù)構(gòu)造 Maple的圖形動畫技術(shù)——用Maple(6~9)制作數(shù)學(xué)動畫課件 88圖4.17 基于plot圖形的版animate動畫〔連環(huán)畫〕animate(inequal,[{x+y+t>1,x-y+t<=2},x=-3..3,y=-3..3,optionsopen=(color=white,thickness=3)],t=[0.2,1.2,2,2.8,3.5,4]);圖4.18 基于inequal圖形的版animate動畫〔連環(huán)畫〕P:=display(plottools[circle]([0,0],1,color=red,thickness=3)):animate(textplot,[[cos(t/2),sin(t/2),“ShuxueDongGan“],color=blue,font=[TIMES,BOLD,20]],t=0..4*Pi,frames=6,view=[-3..3,-2.2..2.2],scaling=constrained,background=P);圖4.19 基于textplot圖形的版animate文字動畫〔連環(huán)畫〕plots[animate](plot,[[sin(2*x),cos(3*x),x=0..t]],t=0.005..2*Pi,numpoints=72,scaling=constrained,thickness=3,frames=6);圖4.20 版本的animate兼有生成曲線軌跡的功能Q1:=display(seq(plot([x,L*sin(x),x=-4..4],thickness=2,color=green),L=3..5)):F:=proc(L)display(plot([L*sin(x),L*cos(x),x=0..2*Pi],thickness=3),plot([x,L*sin(x),x=-4..4],thickness=2,color=blue));end:animate(F,[L],L=[0,1,2,3,4,5,6,7,8],background=Q1,scaling=unconstrained);圖4.21 景曲線的組合動畫〔連環(huán)畫〕圖4.22 Maple的工作頁窗口9第1編第4章第1編第4章2D動畫及其數(shù)據(jù)構(gòu)造 Maple的圖形動畫技術(shù)——用Maple(6~9)制作數(shù)學(xué)動畫課件 1010圖4.23 Maple的動畫窗口〔菜單和工具欄都有變化〕圖4.24 動畫窗口的菜單命令4.25同一個動畫用菜單命令做了不同的設(shè)置圖4.26動畫窗口中的動畫工具欄圖4.27 分菜單Animation中的命令4.28動畫窗口中動畫工具欄可以轉(zhuǎn)換為動畫設(shè)置工具欄圖4.29 動畫窗口中的動畫設(shè)置工具欄圖4.30 右鍵菜單引出的級聯(lián)菜單圖4-31 圖形數(shù)據(jù)O/S序列顯示動畫〔dis-t動畫〕with(plots):Q:=seq(plot(sin(i*x),x=0..2*Pi,color=COLOR(RGB,i*3/10,0,i/10),thickness=3),i=1..9):display(Q,insequence=true);圖4.31 dis-t動畫一例4-32dis-t動畫的聯(lián)合with(plots):Q:=display(seq(plot(sin(i*x),x=0..2*Pi,color=blue,thickness=3),i=1..9),insequence=true):Q1:=display(seq(plot([cos(t)+2,sin(t)+i/9,t=0..2*Pi],color=red,thickness=3),i=1..9),insequence=true):display([Q,Q1]); 4.32dis-t動畫的聯(lián)合〔連環(huán)畫〕圖4-33 兩個anim型動畫的聯(lián)合為了語句清楚,可以事先把各個動畫分別賦值給自己的變量名,然后在display中對這些變量名操作。Q1:=animatecurve(abs(7*sin(x)),x=-3*Pi..3*Pi,view=[-10..10,-1..5.2],scaling=constrained,frames=18,tickmarks=[0,0],thickness=4,numpoints=512):Q2:=animate([u*x,u*x^2,x=-2..2],u=1..18,frames=18,view=[-10..10,-1..14],color=blue):;display({Q1,Q2});:11第1編第4章第1編第4章2D動畫及其數(shù)據(jù)構(gòu)造1212圖4.33 兩個anim型動畫的聯(lián)合圖4-34 幀數(shù)不等就消滅“一多一少”的現(xiàn)象假設(shè)把上面的繪圖語句稍作修改,使兩個動畫的幀數(shù)不等,聯(lián)合動畫中就會消滅“一多一少”的情形。restart:with(plots):Q1:=animatecurve(abs(7*sin(x)),x=-3*Pi..3*Pi,frames=12,view=[-10..10,-1..5.2],scaling=constrained,tickmarks=[0,0],thickness=4,numpoints=412):Q2:=animate([u*x,u*x^2,x=-2..2],u=1..9,view=[-10..10,-1..14],thickness=4,color=blue,frames=7):;display({Q1,Q2});圖4.34 幀數(shù)不等就消滅“一多一少”的現(xiàn)象4-35Maple9displayanimate動畫組合起來。restart:with(plots):animate([u*x,u*x^2,x=-2..2],u=1..3,color=blue,thickness=3,frames=6):QA1:=%:animate(plot,[sin(x)+t,x=-3*Pi..3*Pi],t=0..8,thickness=3,frames=6):QA2:=%:display(QA1,QA2,view=[-10..10,-2..13]);Maple的圖形動畫技術(shù)——用Maple(6~9)制作數(shù)學(xué)動畫課件圖4.35 Maple9中display可以把老版本的兩個animate動畫組合起來〔連環(huán)畫〕4-36削減樣點之后的動畫首幀畫面animate1變?yōu)?的過程中一條正弦曲線的外形1672。animate(sin(t*x),x=0..2*Pi,t=1..3,numpoints=72):numpoints=7,frames=4。形成如下語句。animate(sin(t*x),x=0..2*Pi,t=1..3,numpoints=7,frames=4);4.36削減樣點之后的動畫首幀畫面animatecurve動畫。animatecurve(sin(x),x=0..2*Pi,numpoints=36,frames=4,color=black,thickness=3);4幀來演示,每幀上面樣點數(shù)目都是36。不畫圖形,直接取數(shù)據(jù)。為增加可讀性,把樣點數(shù)目削減為numpoints=9。ani11:=animatecurve(sin(x),x=0..2*Pi,numpoints=9,frames=4);4-37~44PLOT動畫13第1編第4章第1編第4章2D動畫及其數(shù)據(jù)構(gòu)造 Maple的圖形動畫技術(shù)——用Maple(6~9)制作數(shù)學(xué)動畫課件 14144-37單點走正弦引入一個單點的數(shù)據(jù)對象。O1:=POINTS([0,0],SYMBOL(DIAMOND,28))再把單點的行走軌道曲線使用參數(shù)iF(i)。F:=i->[POINTS(evalf([0+i*2*Pi/36,0+sin(i*2*Pi/36)]),SYMBOL(DIAMOND,38))]:其中的[0,0]0i*2*Pi/36sin(i*2*Pi/36)是軌道的離散變量,也就是單點在各幀上增加的位移量。由此得到動畫的數(shù)據(jù)對象是ANIMATE(seq(F(i),i=0..36))??梢允褂萌缦聝煞N方法,把這個動畫數(shù)據(jù)對象演播成為動畫。視覺效果一樣。PLOT(ANIMATE(seq(F(i),i=0..36)),VIEW(-1..7,-1.5..1.5));plots[display](ANIMATE(seq(F(i),i=0..36)),view=[-1..7,-1.5..1.5],insequence=true);圖4.37 單點走正弦4-38一組移動著的文字TEXT([0,0],“Madaochenggong!“,ALIGNBELOW,FONT(TIMES,BOLD,24))再把單點的行走軌道曲線使用參數(shù)iF(i)。F:=i->[TEXT(evalf([0+cos(i*2*Pi/36),0+sin(i*2*Pi/36)]),“Madaochenggong!“,FONT(TIMES,BOLD,12),COLOR(RGB,6*i/36,0,i*2/36))]:由此得到動畫的數(shù)據(jù)對象ANIMATE(seq(F(i),i=0..36))??梢允褂脙煞N方法,把這個動畫數(shù)據(jù)對象演播成為動畫。視覺效果一樣。PLOT(ANIMATE(seq(F(i),i=0..36)),VIEW(-1.5..1.5,-1.2..1.2));plots[display](ANIMATE(seq(F(i),i=0..36)),view=[-1.5..1.5,-1.2..1.2],insequence=true);給出這動畫的連環(huán)畫〔為增加直觀性,圖中畫出了動點行走的軌道圓周曲線。圖4.38 一組文字“馬到成功”在移動4-39一段徑向線段繞原點轉(zhuǎn)動的過程reestart:f1:=n->cos(Pi*n*2/8):g1:=n->sin(Pi*n*2/8):f2:=n->2*cos(Pi*n*2/8):g2:=n->2*sin(Pi*n*2/8):F:=n->[CURVES(evalf([[f1(n),g1(n)],[f2(n),g2(n)]]),THICKNESS(4))]:;ANIMATE(seq(F(n),n=0..8)):PLOT(ANIMATE(seq(F(n),n=0..8)),VIEW(-2..2,-2..2),SCALING(CONSTRAINED));plots[display](ANIMATE(seq(F(n),n=0..8)),insequence=true,view=[-2..2,-2..2],scaling=constrained,thickness=4);:此例的連環(huán)畫如下,其中的圓周是外加的參照物,以便觀看線段的運動。 1515第1編第4章第1編第4章2D動畫及其數(shù)據(jù)構(gòu)造 Maple的圖形動畫技術(shù)——用Maple(6~9)制作數(shù)學(xué)動畫課件 4.39徑向線段圍繞原點旋轉(zhuǎn)4-40~41一個三角形繞原點旋轉(zhuǎn)逐步留下蹤跡圖4.40 三角形繞原點旋轉(zhuǎn)過程中逐步留下蹤跡下面是設(shè)計動畫數(shù)據(jù)構(gòu)造的頁面編程語句。語句中的N,k值,分別表示圖元總個數(shù)和每幀增加的圖元個數(shù)。restart:N:=9:k:=1:p:=t->evalf([cos(t*2*Pi/N),sin(t*2*Pi/N)]):q:=t->evalf([2*cos(t*2*Pi/N),2*sin(t*2*Pi/N)]):F:=n->[CURVES(seq([p(t),q(t),(p(t+1)+q(t+1))/2,p(t)],t=0..k*n),THICKNESS(4))];PLOT(ANIMATE(seq(F(n),n=0..N/k)),SCALING(CONSTRAINED));1616第1編第4章第1編第4章2D動畫及其數(shù)據(jù)構(gòu)造 Maple的圖形動畫技術(shù)——用Maple(6~9)制作數(shù)學(xué)動畫課件 17圖4.41 三角形繞原點旋轉(zhuǎn)留下蹤跡圖4-42~43 六邊形留下的蹤跡首先寫出兩個二元函數(shù),并設(shè)計出離散化處理方案。restart:f:=(x,t)->cos(x)+t:g:=(x,t)->sin(x)+sin(t):a:=0:b:=2*Pi:M:=6:c:=0:d:=2*Pi:N:=11:a+(b-a)*i/M:c+(d-c)*n/N:k:=1:M打算折線上節(jié)點的個數(shù),M+1M邊形。N打算蹤跡的個數(shù),動畫完成時,N+1M邊形。使用代換函數(shù)subs()對原來的二元函數(shù)離散化處理。f1:=(i,j)->subs(t=c+(d-c)*j/N,x=a+(b-a)*i/M,f(x,t)):g1:=(i,j)->subs(t=c+(d-c)*j/N,x=a+(b-a)*i/M,g(x,t)):做成點的seq。p:=(i,j)->evalf([f1(i,j),g1(i,j)]):seq(p(i,j),i=0..M):完成幀的數(shù)據(jù)對象設(shè)計。F:=n->[CURVES(seq([seq(p(i,j),i=0..N)],j=0..k*n),THICKNESS(3))]:;最終寫出動畫顯示語句。PLOT(ANIMATE(seq(F(n),n=0..N/k)),SCALING(CONSTRAINED),AXESTICKS(0,0));圖4.42 六邊形沿著正弦線留下蹤跡使用display命令,可以從動畫數(shù)據(jù)對象獲得該動畫的array顯示。plots[display]({ANIMATE(seq(F(n),n=0..N/k))},tickmarks=[0,0]);圖4.43 六邊形沿正弦移動的array顯示4-44孤點留下的“身影”定義軌道參數(shù)方程,并指定幀變數(shù)n的終止值N,即刻可得一種單點的蹤跡動畫。restart:with(plots):N:=8:f:=(t,n)->(t*2*Pi/N*n/N):g:=(t,n)->sin((t*2*Pi/N)*n/N):F:=n->[POINTS(seq(evalf([f(t,n),g(t,n)]),t=0..n))]:;ANIMATE(seq(F(n),n=0..N)):PLOT(ANIMATE(seq(F(n),n=0..N)),VIEW(0..7,-1..1));display(ANIMATE(seq(F(n),n=0..N)),insequence=true);4.44孤點留下的身影這種動畫的特點是:蹤跡點數(shù)漸漸增加,并且已經(jīng)消滅的蹤跡點在以后各幀上又發(fā)生18第1編第4章第1編第4章2D動畫及其數(shù)據(jù)構(gòu)造 Maple的圖形動畫技術(shù)——用Maple(6~9)制作數(shù)學(xué)動畫課件 19位置的移動。與animatecurve的效果格外相像。4-45孤點留下的“腳印”f,g的定義改成關(guān)于tn/N,就可得到單點的另一種蹤跡動畫。restart:with(plots):N:=12:f:=(t)->(t*2*Pi/N):g:=(t)->sin((t*2*Pi/N)):F:=n->[POINTS(seq(evalf([f(t),g(t)]),t=0..n),SYMBOL(CIRCLE,24))]:;PLOT(ANIMATE(seq(F(n),n=0..N))):圖4.45 孤點留下的腳印4-46一個曲線族的伸展restart:N:=36:M:=8:M打算族中曲線的條數(shù),N打算一條曲線上的樣點數(shù)目。p:=(x,t,n)->evalf([x*2*Pi/N,(1+t*6*n/(M)/M)*x*sin(x*2*Pi/N)+2*cos(x*2*Pi/N)]):x是每條曲線的參變量,t是族中曲線的編碼,n是動畫的幀編碼。F:=n->[CURVES(seq([seq(p(x,t,n),x=0..N)],t=0..M)),THICKNESS(2)]:完成幀映射——F(n),所表達的是動畫第n幀的數(shù)據(jù)對象。PLOT(ANIMATE(seq(F(n),n=0..M)));aa:=ANIMATE(seq(F(n),n=0..M)):plots[display](aa,insequence=true,thickness=4,color=blue); 由PLOT和display得來的視覺效果,兩者一樣。 2020 圖4.46 曲線族伸展的連環(huán)畫4-47~48O/S變換函數(shù)做動畫4-47圍繞原點轉(zhuǎn)動的變色三角形首先引入一個多邊形數(shù)據(jù)對象。POLYGONS([[-4,0],[-4,-4],[0,-4]],COLOR(HUE,0.5)):Q:=POLYGONS([[-4,0],[-4,-4],[0,-4]],COLOR(HUE,i/10)):Q經(jīng)過旋轉(zhuǎn)函數(shù)rotate作用而生成的圖形對象list〔i的〕做F(i)。F:=i->evalf([rotate(Q,2*Pi*i/M)]):從而得到動畫的數(shù)據(jù)對象ANIMATE(seq(F(i),i=0..36))。可以使用兩類方法,把這個動畫數(shù)據(jù)對象演播成為動畫,視覺效果是一樣的。要特別指出的是,使用display播放這動畫時,還可再分別使用兩種語句,視覺效果也是一樣的。PLOT(ANIMATE(seq(F(i),i=0..M)),VIEW(-5.7..5.7,-5.7..5.7),SCALING(CONSTRAINED));display(ANIMATE(seq(F(i),i=0..M)),insequence=true,view=[-5.7..5.7,-5.7..5.7],scaling=constrained);display(seq(F(i),i=0..M),insequence=true,view=[-5.7..5.7,-5.7..5.7],scaling=constrained);第1編第4章第1編第4章2D動畫及其數(shù)據(jù)構(gòu)造 Maple的圖形動畫技術(shù)——用Maple(6~9)制作數(shù)學(xué)動畫課件 24242121圖4.47 圍繞原點轉(zhuǎn)動的變色三角形〔連環(huán)畫〕4-48rotate函數(shù)設(shè)計的文字移動動畫Q:=textplot([2,0,“Madaochenggong!“],font=[SYMBOL,12],color=blue):;QQ:=rotate(Q,2*Pi*i/18):;F:=i->[op(QQ)]:ANIMATE(seq(F(i),i=0..18)):PLOT(ANIMATE(seq(F(i),i=0..18)),VIEW(-5..5,-4..4),SCALING(CONSTRAINED));本動畫的連環(huán)畫面是:圖4.48 使用rotate函數(shù)設(shè)計的文字移動動畫4-49~50proc動畫的概念圖4-49 proc動畫----程序DDGC我們來編寫一個動畫proc,并加以詳盡說明。上節(jié)實例1〔單點走正弦〕的頁面程序中,最核心的語句是F:=i->[POINTS(evalf([0+i*2*Pi/36,0+sin(i*2*Pi/36)]),SYMBOL(DIAMOND,38))]:PLOT(ANIMATE(seq(F(i),i=0..36)),VIEW(-1..7,-1.5..1.5));現(xiàn)在,就從它這里開頭。第一步,把這頁面程序改寫成下面的樣子。restart:G:=[t,sin(t),t=0..2*Pi];M:=36;a:=lhs(rhs(op(3,G)));b:=rhs(rhs(op(3,G)));f:=i->subs(t=a+(b-a)/M*i,op(1,G));g:=i->subs(t=a+(b-a)/M*i,op(2,G));F:=i->[POINTS(evalf([f(i),g(i)]))];PLOT(ANIMATE(seq(F(i),i=0..M)),AXESTICKS(0,0)):;f(i);g(i);這一步的工作內(nèi)容是,從F(i)的定義表達式中把軌道參數(shù)方程提取出來,寫成最前面G:=[t,sin(t),t=0..2*Pi]。同時還把軌道參數(shù)區(qū)間分割分?jǐn)?shù)M:=36也提到前面去,寫成其次行的賦值語句。Gt=0..2*Pi右端的左右兩數(shù)值分別記ab。第五、六兩行是將G的前二元素〔軌道參數(shù)方程的兩個函數(shù)〕中的變量t都進展t=a+(b-a)/M*i,實現(xiàn)軌道方程的離散化處理。經(jīng)過改寫之后這個頁面程序所生成的動畫,照舊是“單點走正弦”。但是它具有改換G中的軌道參數(shù)方程以及參數(shù)變化區(qū)間進展另一種賦值,就能使動M的取值,就可以把握動畫的幀數(shù)。所以,這一步改編的意義是使得原有的頁面程序獲得了相當(dāng)?shù)耐ㄓ眯浴T谶@個改編過程中,可以隨時檢測各個語句是否給出預(yù)期的返回,如有不妥,可以準(zhǔn)時修正。假設(shè)對于最為關(guān)鍵的語句返回值是否正確沒有把握,還可另加幾個語句測試。比方假設(shè)想看看f(i)和g(i)會返回什么,就加上最終一行。本例中各語句的正確返回值應(yīng)當(dāng)是下面的結(jié)果〔最終兩值是純?yōu)橛^測而設(shè),改編完成之后應(yīng)當(dāng)刪除。G:=[t,sin(t),t 0..2]M:=36a:=0b:=2f:=i subs

t

(b a)iM

,op(1,G) g:=i subs

t

(b a)iM

,op(2,G) F:=i [POINTS(evalf([f(i),g(i)]))]1 i18sin1 i18 接下來,再作其次步工作。把經(jīng)過改編的頁面程序封裝起來,成為一個經(jīng)過命名的proc。封裝的結(jié)果是下面的樣子。G:=[x(t),y(t),t=low..hi]:DDGC:=proc(G,M)locali,a,b,m,n,f,g,F;a:=lhs(rhs(op(3,args[1])));b:=rhs(rhs(op(3,args[1])));m:=op(1,args[1]);n:=op(2,args[1]);f:=i->subs(t=a+(b-a)/M*i,m);g:=i->subs(t=a+(b-a)/M*i,n);F:=i->[POINTS(evalf([f(i),g(i)]))];PLOT(ANIMATE(seq(F(i),i=0..M)),AXESTICKS(0,0));end;這就是一個相對完整的“單點走軌道”proc動畫程序。執(zhí)行之后,Maple會自動返回以下的結(jié)果。DDGC :=proc(G,M)local i,a,b,m,n,f,g,F;a:=lhs(rhs(op(3,args[1])));b:=rhs(rhs(op(3,args[1])));m:=op(1,args[1]);n:=op(2,args[1]);f:=i subs(t a ((b a)i)/M,m);g:=i subs(t a ((b a)i)/M,n);F:=i [POINTS(evalf([f(i),g(i)]))];PLOT(ANIMATE (seq(F(i),i 0..M)),AXESTICKS (0,0))endproc對這個名稱叫做DDGC的proc,作以下幾點說明。proc前面的一行,并不屬于proc,而是預(yù)備輸入給這proc的軌道方程。使用名為DDGC的proc時,它是要用到的“進口原材料序時觀看便利。可以看出,除了三行含有黑體字的proc外殼之外,幾乎就是原來頁面程序的簡潔變m,nproc不會正常運行。這是由于Mapleproc有一個與眾不同的特別要求:一個局部變量不能proc之內(nèi)運算兩次以上。為避開這一限制必需增加一層賦值語句。這個proc雖然是完整的,但還不夠完善——使用時不能參與設(shè)置選項。為做改進,再參與一些語句,以便實現(xiàn)設(shè)置選項參數(shù)的傳遞。并把輸出句由原來的PLOT語句修改為display語句。結(jié)果就是下面的樣子。DDGC:=proc(G,M)locali,a,b,m,n,f,g,F,lopts;a:=lhs(rhs(op(3,args[1])));b:=rhs(rhs(op(3,args[1])));m:=op(1,args[1]);n:=op(2,args[1]);lopts:=args[3..nargs];f:=i->subs(t=a+(b-a)/M*i,m);g:=i->subs(t=a+(b-a)/M*i,n);F:=i->[POINTS(evalf([f(i),g(i)]))];plots[display]([ANIMATE(seq(F(i),i=0..M))],lopts);end:;這一次的變化表現(xiàn)在,多了一個局部變量賦值語句,就是lopts:=args[3..nargs]。它的意思是說,把proc輸入中的第三位以后的變元序列,賦值給變量名lopts,并將此變量名參與到輸出語句中去。這就完成了參數(shù)傳遞的設(shè)置。做為一段程序,這個proc至此已經(jīng)根本完善了。把軌道曲線G的繪制也一并放到proc當(dāng)中去〔放在proc內(nèi)部倒數(shù)其次行,即Q2。DDGC:=proc(G,M)locali,a,b,m,n,f,g,F,lopts,Q1,Q2;a:=lhs(rhs(op(3,args[1])));b:=rhs(rhs(op(3,args[1])));m:=op(1,args[1]);n:=op(2,args[1]);lopts:=args[3..nargs];f:=i->subs(t=a+(b-a)/M*i,m);g:=i->subs(t=a+(b-a)/M*i,n);F:=i->[POINTS(evalf([f(i),g(i)]))];plots[display]([ANIMATE(seq(F(i),i=0..M))],lopts,insequence=true,tickmarks=[0,0]);Q1:=%;Q2:=plot(G,linestyle=4);plots[display](Q1,Q2);end:;不妨使用幾次,檢測它的效果。第一次試用:單點走橢圓。G:=[3*cos(t),2*sin(t),t=0..2*Pi]:M:=11: DDGC(G,M);圖4.49 第一次試用程序DDGC圖4-50 其次次試用程序DDGC其次次試用:孤點沿著李薩

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。