首页 > 网站 > 媒体动画 > 正文

Authorware开发实例:Authorware活塞运动范例地改进

2024-09-08 19:26:06
字体:
来源:转载
供稿:网友
摘 要:authorware7.0自带的piston.a7p是模拟活塞运动效果的范例文件,在国内authorware著作中被广泛引用。但通过简单检测即可发现此范例中活塞位置的确定是错误的,违反了活塞运动的一般规律。本文在对活塞运动进行定性分析的基础上对范例文件提出了简单而有效的改进方法。关键词:authorware showme  piston authorware自带的showme程序是介绍authorware设计技术的范例文件,通过学习这些范例,可以领悟到authorware的高级应用技术和编程技巧。其中piston.a7p是authorware7.0提供的一个模拟曲柄与活塞将直线运动转化为圆周运动的例子。在这个例子中,编程人员使小球通过运动图标沿一个圆周路径移动,而活塞在纵方向上不产生移动,其横坐标由如下表达式决定: sqrt((displayx@”ball”-pistonwidth)**2+(displayy@”ball”-pistony)**2)-50 这个范例文件从authorware5.0开始,历经几个版本,并且在国内许多authorware著作中被奉为经典广泛引用。然而笔者偶然通过trace函数和控制面板观察发现其连杆长度其实是一个不断变化的值(如下图所示),这显然不符合活塞运动的规律,同时说明活塞位置的确定存在错误。 下面通过简单的数学分析探讨活塞和小球之间位置变化的关系,假设活塞与小球的初始位置如下所示:(小黑块为活塞,右侧圆周为小球的运动路径,a是连杆长度。) 则当活塞运动一个数值x时,小球的位置应为以活塞顶点为圆心(活塞宽度为b),以连杆长度a为半径所画的圆与小球运动圆周相交的点a,如下图所示: 显然a点坐标(x2,y2)满足下列方程: 其中(x0,y0)(x1,y1)分别是活塞坐标和小球运动圆周的圆心坐标,c是小球运动圆周的半径,y0=y1。求解方程,得出: x2= y2= 通过以上定性分析就可以对authorware自带的piston.a7p进行改进,让它完成真正的活塞运动了。这里我们以活塞位置为基准利用上述公式确定小球的位置,避免了因小球运动圆周绘制带来的影响。为了方便演示,我们将变量进行初始化赋值:a=74, b=48, x0=26, y0=y1=132, x1=158, c=34,笔者这里的赋值是参考authorware源文件得出的,你也可以任意修改。但要注意,连杆长度一定要大于小球运动圆周的半径,最好大于其直径。下面开始对piston.a7p进行改进。首先修改draw and move组图标中的两个运动图标属性为指向固定点运动,活塞坐标为(x0+step,y1),小球坐标为(x2,y2),然后修改increment计算图标内容为: step:=step+direction*reverse ――使活塞的运动方向受两个变量控制 x2:=sqrt((74**2-34**2+158**2-(50+step)**2)/(2*(108-step)) ) y2:=132-sqrt(74**2-(x2-50-step)**2)*direction if step>=68|step<=0 then direction:=-direction ――使活塞运动到两侧后反向 end if 最后修改perpetual button按钮交互中计算图标内容为: reverse:=-reverse ――reverse是控制活塞反向运动的变量,初值为1。至此修改完毕,再用trace函数和控制面板观察,连杆长度始终为一个固定值
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表