打字猴:1.70101103e+09
1701011030 所以当ω足够大时,会看到白球在碰撞后会不停反而加速,而且如果碰前的角速度越大,加速持续的时间也就越长。而且最后白球将以的速度向前运动。
1701011031
1701011032 ②低杆碰撞
1701011033
1701011034
1701011035 低杆球碰撞如图9-34所示,在低杆球中,碰撞前白球具有逆时针绕质心的角速度ω,设碰撞前瞬间白球的质心速度为,由于假设小球均为光滑均质球体,因此球之间的摩擦忽略不计,所以白球的转动不影响碰撞的结果。
1701011036
1701011037
1701011038
1701011039
1701011040 图9-34 两台球低杆碰撞分析
1701011041
1701011042
1701011043
1701011044 由动量守恒和机械能守恒可知,被碰撞的球碰后速度,白球碰后瞬间质心速度为0,但有一个逆时针的角速度ω,由于摩擦力Ff产生的阻抗力矩的作用,最终白球会做纯滚运动。设碰撞后t时间,白球开始纯滚动,且纯滚动时的角速度和质心速度分别为。
1701011045
1701011046
1701011047 则由纯滚动条件有:;
1701011048
1701011049
1701011050 又由动量矩定理:;
1701011051
1701011052
1701011053 动量定理:。
1701011054
1701011055 最后解得:
1701011056
1701011057
1701011058
1701011059
1701011060
1701011061 所以可以看出,打出低杆后,最后白球将以的速度反向运动,而且随着碰撞前的转动角速度而改变,因此只有使得碰撞前的角速度达到一定值,才可能打出理想的效果。
1701011062
1701011063 采用MATLAB程序进行桌球游戏模拟,程序设计如下:
1701011064
1701011065     %台球模拟程序    clc,clear,close all         %清屏和清除变量    warning off                 %消除警告    figure(‘color’,[1,1,1])    axis([-1.6,12.6,-1.6,10.7])    %确定坐标轴参数范围     hold on                       %保持当前图形及轴系的所有特性     fill([-2,13,13,-2],[-2,-2,11,11],[0,1,0]);           %填充底座背景     fill([-1,12,12,-1],[-1,-1,10,10],[0,0.5,0]);         %填充底座背景     ball1=line(0,5,‘color’,‘r’,‘marker’,’.’,‘erasemode’,‘xor’,‘markersize’,60);                                      %设置小球颜色、大小和线条的擦拭方式     ball2=line(8,9,‘color’,‘g’,‘marker’,’.’,‘erasemode’,‘xor’,‘markersize’,60);                                      %设置小球颜色、大小和线条的擦拭方式     ball3=line(-1,-1,‘color’,‘g’,‘marker’,’.’,‘erasemode’,‘xor’,‘markersize’,80);                                    %设置左下角圆的颜色、大小和线条擦拭方式     ball4=line(12,-1,‘color’,‘g’,‘marker’,’.’,‘erasemode’,‘xor’,‘markersize’,80);                                    %设置右下角圆的颜色、大小和线条擦拭方式     ball3=line(-1,10,‘color’,‘g’,‘marker’,’.’,‘erasemode’,‘xor’,‘markersize’,80);                                    %设置左上角圆的颜色、大小和线条擦拭方式     ball4=line(12,10,‘color’,‘g’,‘marker’,’.’,‘erasemode’,‘xor’,‘markersize’,80);                                    %设置右上角圆颜色、大小和线条擦拭方式          title(‘台球模拟运动比赛’, ‘color’,‘r’,‘fontsize’,15);%图形标题     pause(1)             %设定暂停时间的长度     t=0;dt=0.005;        %设置初始数值     while t<7.2          %设定横轴范围         t=t+dt;          %设置横轴计算公式         y=1/2*t+5;       %设置纵轴计算公式          set(ball1,‘xdata’,t,‘ydata’,y)        %设置球的运动       drawnow;                                 %刷新屏幕     end                                        %结束     while t<8.8                                %设定横轴范围         t=t+dt;                                %设置横轴计算公式         y=1/2*t+5;                             %设置纵轴计算公式          set(ball2,‘xdata’,t,‘ydata’,y)        %设置球的运动       drawnow;                                 %刷新屏幕     end                                        %结束     while t<11.5                               %设定横轴范围         t=t+dt;                                %设置横轴计算公式         y=-1/2*t+14.3;                         %设置纵轴计算公式          set(ball2,‘xdata’,t,‘ydata’,y)        %设置球的运动       drawnow;                                 %刷新屏幕     end                                        %结束     while t>-0.5                               %设置横轴范围         t=t-dt;                                %设置横轴计算公式         y=1/2*t+2.90;                          %设置纵轴计算公式          set(ball2,‘xdata’,t,‘ydata’,y)        %设置球的运动       drawnow;                                 %刷新屏幕     end                                        %结束     while t<6                                  %设置横轴范围         t=t+dt;                                %设置横轴计算公式         y=-1/2*t+2.40;                         %设置纵轴计算公式          set(ball2,‘xdata’,t,‘ydata’,y)        %设置球的运动       drawnow;                                 %刷新屏幕     end                                        %结束     while t<11.5                               %设置横轴范围         t=t+dt;                                %设置横轴计算公式         y=1/2*t-3.0;                           %设置纵轴计算公式          set(ball2,‘xdata’,t,‘ydata’,y)        %设置球的运动       drawnow;                                 %刷新屏幕     end                                        %结束     while t>-2                                 %设置横轴范围         t=t-dt;                                %设置横轴计算公式         y=-t*7.65/12.9+9.57;                   %设置纵轴计算公式          set(ball2,‘xdata’,t,‘ydata’,y)        %设置球的运动       drawnow;                                 %刷新屏幕     end                                        %结束     text(2,5,‘恭喜!进球了啊!’,‘fontsize’,16,‘color’,‘r’); %显示字幕的颜色和大小
1701011066
1701011067 运行程序输出图形如图9-35~图9-38所示。
1701011068
1701011069
1701011070
1701011071
1701011072
1701011073   图9-35 台球运动初始化     图9-36 两球碰撞瞬间     图9-37 台球受击在桌面运动     图9-38 台球进球瞬间   如图9-35~图9-38所示,桌球在受力的方向上移动,通过正碰,两桌球交换速度,粉红色小球不断地在台球桌上运动,直到最后进入孔洞为止。
1701011074
1701011075 这就是程序设计之美,完美的程序设计,让虚拟现实变得更加现实,人们均可以乐在其中。
1701011076
1701011077
1701011078
1701011079
[ 上一页 ]  [ :1.70101103e+09 ]  [ 下一页 ]