科学计算与模拟讲稿.doc_第1页
科学计算与模拟讲稿.doc_第2页
科学计算与模拟讲稿.doc_第3页
科学计算与模拟讲稿.doc_第4页
科学计算与模拟讲稿.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

科学计算与模拟编程讲稿一、平台介绍在本平台下学习计算与模拟编程,是按照中国数字教学工作室创立的独特的学习方法和模式来进行的,与通常学院式的学习方式完全不同。这是每一个初学者必须清楚了解的,否则将事倍功半。本工作室创立的独特的学习方法和模式有如下几个要点:1. 从操作使用样例入门,以样例为模板进行修改或添加,为了保持原样例文件完整无损,请使用复制后的样例文件来做学习用的工作文件;2. 修改或添加的方法是参看输出功能函数表或样例文件,直接复制所需的程序段到当前使用的工作文件中,当你能熟练地成功实现20个样例的修改或添加,你就会初步掌握独立编程的技巧了;3. 右方参数及程序控制界面的设置直接在记事本文件controls 和WizSoft中输写汉字或数字,我们称之为“加减法”,请记住“加减法”是学习本平台的基本方法;4. step是本平台自带的当前时间,它代替了一个时间的循环运行,程序员还可以仿照 step自行定义或添加其他的自动循环变量如step1、t等等;5. 完成一个程序后,可重新命名并保存,再从样例中选择一个文件复制作为工作文件。在实际操作中请按如下步骤进行:1. 从样例中选择一个文件复制作为工作文件;2. 打开工作文件包,用鼠标双击WizSoft.dsw, 随即进入VC+;3. 初学者对源程序绝对不能分散注意力,而只要专门关注绘制场景部分:/绘制场景void demoApp:RenderScene(int sceneIndex)*而其余部分可暂时不去理会它,这一点要切切记住!上面程序中大括号内的内容是我们必须学会的,一般来说它有四个部分: (1)变量定义;(2)变量赋值;(3)循环计算;(4)结果输出。下面举例说明(1)变量定义 Point3f p , q2,s100100; /定义三维的点、点组、平面网格点。Color4f color , color12, color2100100;/定义四维的颜色(红、黄、蓝、透明度) Orient direct; /定义方向() int i,j; /定义整型变量 float a, b, PI=3.1415926; /定义实型变量(2)变量赋值点的赋值 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)循环计算for(i=0;i0) draw:Line(si-1,si,color2); / 画轨迹glt:EnableLight();draw:Balls(1,p+int(step), X, 32, 32, color); /画当前位置draw:Balls(1,q+int(step), X, 32, 32, color3); draw:Balls(1,s+int(step), X, 32, 32, color2);(4)结果输出:请参看样例或输出函数表,并从中复制所选择的函数到当前工作文件中。注意画当前对象位置请在循环括号外输出;画轨迹请在循环内输出(见上(3)中的例子)。4. 选择可调参数连接滑动条或设置控制键滑动条变量名为P_radius,P_omega ,V ,X = 4。如要增加,可自己取名,但要在程序最前面中定义。如:float M,H;并要在/初始化控件参数中补充初值void demoApp:InitializeParameters(int sceneIndex)P_radius =30;P_omega = 7;V = 5;X = 4; M=1;H=5;控件的设置请参考样例。5. 运行程序及改错写完程序后按ctrl+F5或用鼠标点击工作文件界面中的上方图标 如有错误,可按下方提示修改,直至无错出现。计算机是一个实践的科学,要坚持经常上机练习。编程技术是一个长期积累的过程,只要你能刻苦努力并能坚持不懈,功夫不负有心人,相信你一定能成为一位编程的高手!二、实例讲解1.画球-画轨迹-拓展为天体运行画球源程序: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(); /画实心球 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(); 画天体运行源程序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.画曲面-拓展为波的干涉画曲面源程序: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);拓展点源波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.画曲线-拓展为偶极子的电场线点电荷组的场与势分布模型(1)设计思路 已知电荷的分布求场强的分布,是电学中的基本问题,而依据点电荷分布作出电场线的分布图或等势线的分布图是研究电学的基本重要技能。解决这一问题的要点有三:1)电场强度与电场线的关系 在平面上,某点电场强度的二个分量与电场线在该点的无穷小线元的二个分量成比例,即, 给任意一个参数则有于是 其中比例因子已包含在当中。2)实际计算中的选取 取,为常数,其大小可依作图的精度要求而定,是电场强度大小,取是因为场强大的地方偶极子的电场线较短。小的地方偶极子的电场线较长,可使从正电荷出发的电场线无论长短都能同时到达负电荷(有少数例外,利用对称性或者添补法)。3)电场线叠代方程的初值确定 电场线的出发点及终止点分别是正电荷和负电荷,选取电场线叠代方程的初始值也应由正电荷及负电荷位置和电量大小来决定(见源程序)。至于等势线的作图,只需利用其与电场线垂直的条件便可得到,请读者考虑画等势线的起点或初值应如何选取。实例1电偶极子的场与势分布偶极子的等势线图 (1)数学建模先求势 再求场 电场线的斜率方程为利用参数方程:选择适当的初值(从点电荷出发,等角度选出发点)便可编程作出电场线的图。(2)关于等势线的起点选取电偶极子两电荷连线上某处的电势为求其增量并令它等于常数,如1伏特,可求得于是从开始,每增加取一点,作为等势线的起点。(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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论