基于虚拟现实技术的运动学仿真

    郭俊涛 李浩宇 陈兆 谢文高

    

    

    摘 要:本项目通过应用Matlab的编程来展示物体整个运动过程及整个过程中速度、加速度的分析。通过Matlab来辅助学习运动学和解决运动学问题,对学习运动学知识有很大的作用。

    关键词:Matlab软件;运动学;速度;加速度

    0 引 言

    在传统的运动学学习的过程中,由于计算工具和计算手段、分析思路不全等情况,一般只能解决物体运动过程某个状态或时刻的速度、加速等问题(即瞬态分析),而缺少对物体整个过程的分析。基于虚拟现实技术对运动学问题进行过程分析,展现物体运动过程的轨迹图像及物体运动整个过程中的速度、加速度的变化,从而加深学习者对运动规律的了解。本文以运动学中的典型题目为例,通过Matlab软件的应用,使物体的运动轨迹可视化,同时展现物体整个运动过程的速度及加速度的变化。

    1 算例演示

    1.1 原题目

    图示机构中滑块A的速度为常值,vA=0.2m/s,AB= 0.4m.求当AC=CB,θ=30o时杆CD的速度和加速度。

    1.2 题目改编

    图示机构中滑块A的速度为常值,vA=0.2m/s,AB=0.4m。分析杆CD整个过程中速度及加速度的变化。

    1.2.1 MATLAB软件编程

    clear all %清理窗口

    figure

    scrsz = get(0,ScreenSize); %是为了获得屏幕大小,Screensize是一个4元素向量[left,bottom, width, height]

    set(gcf,Position,scrsz);

    Va=0.2; %定义初始速度Va为0.2m/s

    ab=0.4; %定义AB杆长度为0.4m

    od=sqrt(3)/10; %点O到CD杆的距离

    T=(ab-od)/Va; %计算出完整过程的总时间T

    t=0:0.001:T; %将时间T分为1000,每一份为t

    oa=od+(Va.*t); %计算出t时的数据

    xita=acos(oa./ab); %夹角θ

    pa=ab.*sin(xita); %pa段的长度

    ac=(Va*t)./cos(xita); %ac段的长度

    h=(Va*t).*tan(xita); %o到滑块B的高度h

    Wab=Va./(pa); %ab杆的角速度ωab

    pq=pa-h; %pq段的长度

    pc=sqrt((pq.^2)+(Va.*t).^2); %pc段的长度

    af=atan(pq./(Va.*t)); %夹角α

    Vce=pc.*Wab; %滑块C的牵引速度Vce

    r=pi/2-af-xita; %夹角γ(Gamma)

    Vc=Vce.*sin(r)./sin(af+r); %滑块C的速度

    Vcr=Vce.*cos(xita+r)./cos(xita); %滑块C的相对速度Vcr

    Aban=ab.*(Wab.^2);

    Abat=Aban.*cos(xita)./cos((pi/2)-xita);

    AFab=Abat./ab; %AB杆的角加速度αab

    Ac1at=ac.*AFab; %C点杆内的加速度

    Ake=2.*Wab.*Vcr; %滑块C的科氏加速度

    Ac=(Ac1at+Ake)./cos(xita); %滑块C的加速度

    subplot(4,1,1); %图1:C的位置的高度h与时间的关系

    axis([0,T,0,max(h)]);

    hold on

    title(‘C的位置高度h与时间的关系); %输入标题1

    xlabel(‘\itt\rm/s); %画出x轴

    ylabel(‘\ith\rm/m); %画出y轴

    plot(t,h,k,LineWidth,2);

    legend(‘C的位置高h,location,SouthEast); %列出圖例

    subplot(4,1,2); %图2:θ的度数与时间的关系

    dushu=rad2deg(xita); %将θ的弧度转换成度数

    axis([0,T,0,max(dushu)]);

    hold on

    title(‘\theta的度数与时间的关系); %输入标题2

    xlabel(‘\itt\rm/s); %画出x轴

    ylabel(‘\theta\rm/\circ); %画出y轴

    plot(t,dushu,g,LineWidth,2);

    legend(‘\theta的度数,location,NorthEast); %列出图例

    subplot(4,1,3); %图3:C点速度v_{c}(m/s)与时间的关系

    axis([0,T,min(Vc),1]);

    hold on

    plot(t,Vc,r,LineWidth,2);

    title(‘C点速度v_{c}(m/s)与时间的关系); %输入标题3

    xlabel(‘\itt\rm/s); %画出x轴

    ylabel(‘\itv_{c}\rm/(m/s)); %画出y轴

    legend(‘C点速度v_{c}(m/s),location,SouthEast);

    %列出图例

    subplot(4,1,4); %图4:C点加速度a(m/s2)与时间的关系

    axis([0,T,0,2]);

    hold on

    plot(t,Ac,b,LineWidth,2);

    title(‘C点加速度a_{c}(m/s^{2})与时间的关系); %输入标题4

    xlabel(‘\itt\rm/s); %画出x轴

    ylabel(‘\ita_{c}\rm/(m/s^{2})); %画出y轴

    legend(‘C点加速度a_{c}(m/s^{2}),location,SouthEast);%列出图例

    1.2.2 动画展示(部分状态)

    1.2.3 函数图像

    2 结论

    本文利用虚拟现实技术(即MATLAB)应用于运动学的仿真当中,将运动学的问题可视化,对运动学问题进行过程分析,摆脱了人工计算只能分析物体某一时刻的速度、加速度的缺陷。将MATLAB应用于解决运动学的问题当中,有利于更好地掌握运动规律。

    参考文献:

    [1]周群益,MATLAB可视化大学物理学.清华大学出版社,物理与微电子科学,2011.

    [2]哈尔滨工业大学理论力学教研室,理论力学(Ⅰ),高等教育出版社,2016.

    [3]尚玫,理论力学可视化教学Matlab Simulink.应用物理,2010.