基于Java与Cult3d 技术的发动机运动仿真(2)

来源:网络(转载) 作者:张永亮 张伟 吴刚 发表于:2011-06-29 09:55  点击:
【关健词】Cult3D;Java;曲轴连杆机构;交互设计;仿真
{ b=0; c=180; quzhou=new CultObject(fdj_quzhou); huosai3=new CultObject(fdj_hsz3_huosaiti); liangan3=new CultObject(fdj_hsz3_lianganxiaotou); huosai2=new CultObject(fdj_hsz2_huosaiti); liangan2=new C

  { b=0;
  c=180;
  quzhou=new CultObject("fdj_quzhou");
  huosai3=new CultObject("fdj_hsz3_huosaiti");
  liangan3=new CultObject("fdj_hsz3_lianganxiaotou");
  huosai2=new CultObject("fdj_hsz2_huosaiti");
  liangan2=new CultObject("fdj_hsz2_lianganxiaotou");
  huosai1=new CultObject("fdj_hsz1_huosaiti");
  liangan1=new CultObject("fdj_hsz1_lianganxiaotou");
  huosai4=new CultObject("fdj_hsz4_huosaiti");
  liangan4=new CultObject("fdj_hsz4_lianganxiaotou");
  rotate=new CultEvent("rotate");
  rotateContinue=new CultEvent("rotateContinue");}
  /*构造用户调用方法*/
  public void Rotate(String objName)
  {String s;
  float f;
  if(i>0)
  {amRotate23=amRotate(b)-amRotate(b+5);
  amTranslate23=amTranslate(b+5)-amTranslate(b);
  amRotate14=amRotate(c)-amRotate(c+5);
  amTranslate14=amTranslate(c+5)-amTranslate(c);
  b+=5;
  c+=5;
  if(b>=360)
  b=0;
  if(c>=360)
  c=0;
  quzhou.rotate(quzhou.Z,(float)PI/36,time,false);
  huosai1.translate(0,(float)amTranslate14/40,0,time,false);
  liangan1.rotate(liangan1.Z,(float)amRotate14,time);
  huosai2.translate(0,(float)amTranslate23/40,0,time,false);
  liangan2.rotate(liangan2.Z,(float)amRotate23,time);
  huosai3.translate(0,(float)amTranslate23/40,0,time,false);
  liangan3.rotate(liangan3.Z,(float)amRotate23,time);
  huosai4.translate(0,(float)amTranslate14/40,0,time,false);
  liangan4.rotate(liangan4.Z,(float)amRotate14,time,rotateContinue);}}
  public void Rotate_Continue(String objName)
  {String s;
  float f;
  if(i>0)
  {amRotate23=amRotate(b)-amRotate(b+5);
  amTranslate23=amTranslate(b+5)-amTranslate(b);
  amRotate14=amRotate(c)-amRotate(c+5);
  amTranslate14=amTranslate(c+5)-amTranslate(c);
  b+=5;
  c+=5;
  if(b>=360)
  b=0;
  if(c>=360)
  c=0;
  quzhou.rotate(quzhou.Z,(float)PI/36,time,false);
  huosai1.translate(0,(float)amTranslate14/40,0,time,false);
  liangan1.rotate(liangan1.Z,(float)amRotate14,time);
  huosai2.translate(0,(float)amTranslate23/40,0,time,false);
  liangan2.rotate(liangan2.Z,(float)amRotate23,time);
  huosai3.translate(0,(float)amTranslate23/40,0,time,false);
  liangan3.rotate(liangan3.Z,(float)amRotate23,time);
  huosai4.translate(0,(float)amTranslate14/40,0,time,false);
  liangan4.rotate(liangan4.Z,(float)amRotate14,time,rotate);
  }}
  public void stop(String objName)
  {i=0;}
  public void Event_Trigger(String s)
  {i=1;
  str=s;
  IntegerObject=Integer.valueOf(str);
  time=1/IntegerObject.doubleValue();
  rotate.trigger();}
  public double amRotate(double x)
  { return Math.asin(50*Math.sin((x/180)*PI)/170);}
  public double amTranslate(double x)
  {return 50*Math.cos((x/180)*PI)+Math.sqrt(170*170-50*50*Math.sin((x/180)*PI)*Math.sin((x/180)*PI));}
public void cult3dDestroy()
  { } }
  3.3 在Cult3D中进行交互设计
  在Cult3D中导入曲轴连杆机构的c3d文件,然后在事件规划图中进行交互设计。曲轴连杆机构运动的交互设计动作主要包括曲轴的匀速旋转运动、活塞的直线变速运动和连杆的变速摆动。这些动作主要是通过Cult3D中自定义事件调用Java类控制实现的,在交互设计时,首先在事件规划图中加入自定义事件start和stop分别触发Java类中的Event_Trigger方法和stop方法(具体代码见3.2 实现运动过程的Java类设计)控制曲轴连杆机构运动和停止。Java类中的Event_Trigger方法除了触发曲轴连杆机构运动外,还向Java类传递一个控制速度的参数,以实现不同转速运行。这个速度参数在Java类中用参量time接收并存储。然后在事件规划图中加入自定义事件rotate和rotateContinue,在Java类中,Rotate方法调用结束时触发Cult3D中的rotateContinue事件,通过rotateContinue事件调用Java类中的Rotate_Continue方法;Rotate_Continue方法调用结束时触发Cult3D中的rotate事件,通过rotate事件调用Java类中的Rotate方法,以此循环,使发动机的曲轴连杆机构循环运动。具体的事件规划图如图2所示。
  3.4 Cult3D文件发布
  曲轴连杆机构模型交互设计完成以后,需要导出发布成“*.co”格式的文件,以便于嵌入Web网页通过浏览器进行展示。由于Cult3D交互设计中的事件是自定义事件,要通过网页中的按钮和JavaScript程序来触发Cult3D中的动作。因此在承载co文件的网页要添加按钮和JavaScript程序来触发这些事件。网页布局及按钮设计如图3所示。
  触发动作的JavaScript程序代码如下:
  function qidong1()
  {Cult3D=new Cult3D_Object("CultObject");
  var x = Cult3D.triggerAction("start",document.func.sudu.value);
  document.func.huancongshang.disabled=true; (责任编辑:南粤论文中心)转贴于南粤论文中心: http://www.nylw.net(南粤论文中心__代写代发论文_毕业论文带写_广州职称论文代发_广州论文网)
顶一下
(0)
0%
踩一下
(0)
0%


版权声明:因本文均来自于网络,如果有版权方面侵犯,请及时联系本站删除.