科學(xué)計(jì)算與模擬講稿.doc_第1頁(yè)
科學(xué)計(jì)算與模擬講稿.doc_第2頁(yè)
科學(xué)計(jì)算與模擬講稿.doc_第3頁(yè)
科學(xué)計(jì)算與模擬講稿.doc_第4頁(yè)
科學(xué)計(jì)算與模擬講稿.doc_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

科學(xué)計(jì)算與模擬編程講稿一、平臺(tái)介紹在本平臺(tái)下學(xué)習(xí)計(jì)算與模擬編程,是按照中國(guó)數(shù)字教學(xué)工作室創(chuàng)立的獨(dú)特的學(xué)習(xí)方法和模式來(lái)進(jìn)行的,與通常學(xué)院式的學(xué)習(xí)方式完全不同。這是每一個(gè)初學(xué)者必須清楚了解的,否則將事倍功半。本工作室創(chuàng)立的獨(dú)特的學(xué)習(xí)方法和模式有如下幾個(gè)要點(diǎn):1. 從操作使用樣例入門(mén),以樣例為模板進(jìn)行修改或添加,為了保持原樣例文件完整無(wú)損,請(qǐng)使用復(fù)制后的樣例文件來(lái)做學(xué)習(xí)用的工作文件;2. 修改或添加的方法是參看輸出功能函數(shù)表或樣例文件,直接復(fù)制所需的程序段到當(dāng)前使用的工作文件中,當(dāng)你能熟練地成功實(shí)現(xiàn)20個(gè)樣例的修改或添加,你就會(huì)初步掌握獨(dú)立編程的技巧了;3. 右方參數(shù)及程序控制界面的設(shè)置直接在記事本文件controls 和WizSoft中輸寫(xiě)漢字或數(shù)字,我們稱之為“加減法”,請(qǐng)記住“加減法”是學(xué)習(xí)本平臺(tái)的基本方法;4. step是本平臺(tái)自帶的當(dāng)前時(shí)間,它代替了一個(gè)時(shí)間的循環(huán)運(yùn)行,程序員還可以仿照 step自行定義或添加其他的自動(dòng)循環(huán)變量如step1、t等等;5. 完成一個(gè)程序后,可重新命名并保存,再?gòu)臉永羞x擇一個(gè)文件復(fù)制作為工作文件。在實(shí)際操作中請(qǐng)按如下步驟進(jìn)行:1. 從樣例中選擇一個(gè)文件復(fù)制作為工作文件;2. 打開(kāi)工作文件包,用鼠標(biāo)雙擊WizSoft.dsw, 隨即進(jìn)入VC+;3. 初學(xué)者對(duì)源程序絕對(duì)不能分散注意力,而只要專門(mén)關(guān)注繪制場(chǎng)景部分:/繪制場(chǎng)景void demoApp:RenderScene(int sceneIndex)*而其余部分可暫時(shí)不去理會(huì)它,這一點(diǎn)要切切記住!上面程序中大括號(hào)內(nèi)的內(nèi)容是我們必須學(xué)會(huì)的,一般來(lái)說(shuō)它有四個(gè)部分: (1)變量定義;(2)變量賦值;(3)循環(huán)計(jì)算;(4)結(jié)果輸出。下面舉例說(shuō)明(1)變量定義 Point3f p , q2,s100100; /定義三維的點(diǎn)、點(diǎn)組、平面網(wǎng)格點(diǎn)。Color4f color , color12, color2100100;/定義四維的顏色(紅、黃、藍(lán)、透明度) Orient direct; /定義方向() int i,j; /定義整型變量 float a, b, PI=3.1415926; /定義實(shí)型變量(2)變量賦值點(diǎn)的賦值 p= 0.0f, 0.0f, -60.0f; 或者 p.x=0.0f; p.y=0.0f; p.z=-60.0f;顏色的賦值 color = 1.0f, 0.7f, 0.8f, 1.0f; 或者color.r=1.0f; color.g=0.7f; color.b=0.8f; color.alpha=1.0f;方向的賦值 direct = 0.0f, 0.0f; 或者 direct.theta=0.0f; direct.pha=0.0f; /角度(3)循環(huán)計(jì)算for(i=0;i0) draw:Line(si-1,si,color2); / 畫(huà)軌跡glt:EnableLight();draw:Balls(1,p+int(step), X, 32, 32, color); /畫(huà)當(dāng)前位置draw:Balls(1,q+int(step), X, 32, 32, color3); draw:Balls(1,s+int(step), X, 32, 32, color2);(4)結(jié)果輸出:請(qǐng)參看樣例或輸出函數(shù)表,并從中復(fù)制所選擇的函數(shù)到當(dāng)前工作文件中。注意畫(huà)當(dāng)前對(duì)象位置請(qǐng)?jiān)谘h(huán)括號(hào)外輸出;畫(huà)軌跡請(qǐng)?jiān)谘h(huán)內(nèi)輸出(見(jiàn)上(3)中的例子)。4. 選擇可調(diào)參數(shù)連接滑動(dòng)條或設(shè)置控制鍵滑動(dòng)條變量名為P_radius,P_omega ,V ,X = 4。如要增加,可自己取名,但要在程序最前面中定義。如:float M,H;并要在/初始化控件參數(shù)中補(bǔ)充初值void demoApp:InitializeParameters(int sceneIndex)P_radius =30;P_omega = 7;V = 5;X = 4; M=1;H=5;控件的設(shè)置請(qǐng)參考樣例。5. 運(yùn)行程序及改錯(cuò)寫(xiě)完程序后按ctrl+F5或用鼠標(biāo)點(diǎn)擊工作文件界面中的上方圖標(biāo) 如有錯(cuò)誤,可按下方提示修改,直至無(wú)錯(cuò)出現(xiàn)。計(jì)算機(jī)是一個(gè)實(shí)踐的科學(xué),要堅(jiān)持經(jīng)常上機(jī)練習(xí)。編程技術(shù)是一個(gè)長(zhǎng)期積累的過(guò)程,只要你能刻苦努力并能堅(jiān)持不懈,功夫不負(fù)有心人,相信你一定能成為一位編程的高手!二、實(shí)例講解1.畫(huà)球-畫(huà)軌跡-拓展為天體運(yùn)行畫(huà)球源程序:title0.Show(15.0f, 0.0f, 60.0f);Point3f c1; /定義球心Orient dir=0,0.1*P_omega*m_step,dir1=0,0; Color4f color=1,0.7,0.5,1,color1=0.,0.,0,0.5;c0.x=0; c0.y=0; c0.z=0;/球心賦值 glt:EnableLight(); glt:SetPolygonMode(GL_FILL); glt:BeginTransform(); glt:ZTransform(c0, dir, 0.0f); draw:Sphere(P_radius, color, 130, 132); glt:EndTransform(); /畫(huà)實(shí)心球 if(GetCheck(1) / 如果敲功能鍵1 glt:SetLineWidth(2); glt:SetPolygonMode(GL_LINE); glt:BeginTransform(); glt:ZTransform(c0, dir, 0.0f); draw:Sphere(P_radius+0.6, color1, 30, 12); glt:EndTransform(); 畫(huà)天體運(yùn)行源程序title0.Show(20.0f, 0.0f, 60.0f);Point3f c1,p1000;int i;Orient dir=0,0; Color4f color=1,0.7,0.5,1,color1=0.,0.,0,0.5;c0.x=0; c0.y=0; c0.z=0; glt:EnableLight(); glt:SetPolygonMode(GL_FILL); glt:BeginTransform(); glt:ZTransform(c0, dir, 0.0f); draw:Sphere(12, color, 130, 132); glt:EndTransform(); glt:SetLineWidth(3); for(i=0;i0) draw:Line(pi-1,pi,color1); glt:BeginTransform(); glt:ZTransform(pint(m_step), dir, 0.0f); draw:Sphere(5, cWHITE, 30, 12); glt:EndTransform();2.畫(huà)曲面-拓展為波的干涉畫(huà)曲面源程序:float a ,b;b = 0.0005*P_radius; a= P_omega;Point3f ps200200;Color4f color=1,0.9,0.9,1;int i, j;for (i=0; i200; +i)for (j=0; j200; +j)psij.x = i * 0.5f;/ 代替半徑rpsij.y = 2 * PI * j / 199;/ 代替thetapsij.z = -20.0f +a*exp(-b*psij.x*psij.x);glt:EnableLight();draw:SurfaceC(200, 200, ps0, color); title.Show(30.0f, 0.0f, 60.0f);拓展點(diǎn)源波float a ,b;b = 0.01*P_radius; a= 0.1*P_omega;Point3f ps200200;Color4f color=1,0.9,0.9,1;int i, j;for (i=0; i200; +i)for (j=0; j200; +j)psij.x = i * 0.5f;/ 代替半徑rpsij.y = 2 * PI * j / 199;/ 代替thetapsij.z = -20.0f +a*sin(0.1*step-b*psij.x);glt:EnableLight();draw:SurfaceC(200, 200, ps0, color); title.Show(30.0f, 0.0f, 60.0f);3.畫(huà)曲線-拓展為偶極子的電場(chǎng)線點(diǎn)電荷組的場(chǎng)與勢(shì)分布模型(1)設(shè)計(jì)思路 已知電荷的分布求場(chǎng)強(qiáng)的分布,是電學(xué)中的基本問(wèn)題,而依據(jù)點(diǎn)電荷分布作出電場(chǎng)線的分布圖或等勢(shì)線的分布圖是研究電學(xué)的基本重要技能。解決這一問(wèn)題的要點(diǎn)有三:1)電場(chǎng)強(qiáng)度與電場(chǎng)線的關(guān)系 在平面上,某點(diǎn)電場(chǎng)強(qiáng)度的二個(gè)分量與電場(chǎng)線在該點(diǎn)的無(wú)窮小線元的二個(gè)分量成比例,即, 給任意一個(gè)參數(shù)則有于是 其中比例因子已包含在當(dāng)中。2)實(shí)際計(jì)算中的選取 取,為常數(shù),其大小可依作圖的精度要求而定,是電場(chǎng)強(qiáng)度大小,取是因?yàn)閳?chǎng)強(qiáng)大的地方偶極子的電場(chǎng)線較短。小的地方偶極子的電場(chǎng)線較長(zhǎng),可使從正電荷出發(fā)的電場(chǎng)線無(wú)論長(zhǎng)短都能同時(shí)到達(dá)負(fù)電荷(有少數(shù)例外,利用對(duì)稱性或者添補(bǔ)法)。3)電場(chǎng)線疊代方程的初值確定 電場(chǎng)線的出發(fā)點(diǎn)及終止點(diǎn)分別是正電荷和負(fù)電荷,選取電場(chǎng)線疊代方程的初始值也應(yīng)由正電荷及負(fù)電荷位置和電量大小來(lái)決定(見(jiàn)源程序)。至于等勢(shì)線的作圖,只需利用其與電場(chǎng)線垂直的條件便可得到,請(qǐng)讀者考慮畫(huà)等勢(shì)線的起點(diǎn)或初值應(yīng)如何選取。實(shí)例1電偶極子的場(chǎng)與勢(shì)分布偶極子的等勢(shì)線圖 (1)數(shù)學(xué)建模先求勢(shì) 再求場(chǎng) 電場(chǎng)線的斜率方程為利用參數(shù)方程:選擇適當(dāng)?shù)某踔担◤狞c(diǎn)電荷出發(fā),等角度選出發(fā)點(diǎn))便可編程作出電場(chǎng)線的圖。(2)關(guān)于等勢(shì)線的起點(diǎn)選取電偶極子兩電荷連線上某處的電勢(shì)為求其增量并令它等于常數(shù),如1伏特,可求得于是從開(kāi)始,每增加取一點(diǎn),作為等勢(shì)線的起點(diǎn)。(3)參考源程序float EE,FF, A,B=100,I,x,y,z,a,d,t=0.12,S,r1,r2,dt,Ey,Ez,E,PI=3.1415926;static Point3f q2,q12,q22,q32,O3;Orient direction;int i,j,n;Color4f color200,color1;direction.phi=0;direction.theta=0; title.Show(90.0f, 0.0f, 50.0f);A=P_omega;S=P_radius;d=V;glt:DisableLight();glt:SetLineWidth(X/2);for(j=0;jint(4*A)+1;j+) I=2*PI*j/int(4*A); z=d+S*cos(I)/2; y=S*sin(I)/2; for(i=0;i0) draw:Line(q0,q1,colori);if(i=(2+int(d/10)draw:Arrow(q0,q1,5,7,color10); q0=q1; z+=Ez*dt; y+=Ey*dt; for(j=0;jint(4*A)+1;j+) I=2*PI*j/int(4*A); z=d+S*cos(I)/2; y=S*sin(I)/2;for(i=0;i0) draw:Line(q10,q11,colori);q10=q11;

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論