{ 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%
版权声明:因本文均来自于网络,如果有版权方面侵犯,请及时联系本站删除.