返回首页
当前位置: > 计算机类 > 计算机网络 >

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

时间:2011-06-29 09:55来源:网络(转载) 作者:张永亮 张伟 吴刚 点击:
{ 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; (责任编辑:南粤论文中心)
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
推荐内容