这次我们来一起看道题,是我本周的作业题之一,觉得挺有意思,特意写一篇文。题目如下:
(忽略我做题痕迹)
先做一下这道题,看看究竟哪里有意思!
首先分析,整个部件的运动是直杆OA绕O点旋转带动的,B滑块被固定在了x坐标轴上。很容易得到A点的坐标:
设B点的x轴坐标为x,则B点坐标为:
因为A点与B点之间的长度是2a,所以有:
我们将其展开,得B点的x坐标:
有了AB点坐标,C点又是杆AB的中点,易得C点坐标为:
到这题目算是做完了,轨道方程联立二式消去共同变量即可,速度求导即可。这都不是本文的重点,重点是下面的。
不知道读者有没有发现,联系本题的实际意义,2倍的a 不会比 r 小,换句话说,2a大于等于r。
可以这样看,当OA转到与y轴重合时,可以看出,为了使B滑块在x轴上而不脱离,2a至少也应该等于r。即 杆AB的长度不能小于杆OA。
有意思的是,我们很容易发现,当2a=r时,当A点在第二三象限旋转时,即在y轴左侧时,B点始终与O点重合,杆AB始终与杆OA重合,直到A再次转到一四象限,即y轴右侧时,以上两点、两杆才相互分离,我们是多么希望能直观地看到这一有趣过程!还好,身处21世纪,计算机可以帮我们做到。以下程序的目的就在于此。
首先,令2a大于r
phi=0:0.05:2*pi; % 角度转一圈
r=1;a=0.7; % 2a>r 不妨取r=1,a=0.7
x=(2*r*cos(phi)+sqrt(4*a^2-r^2*(sin(phi).^2)))/2; % C点x、y坐标
y=r*sin(phi)/2;
mysize=size(phi);
ax=r*cos(phi); % A点x、y坐标
ay=r*sin(phi);
bx=r*cos(phi)+sqrt(4*a^2-r^2*sin(phi).^2); % B点坐标
M=moviein(mysize(2)); % 生成一足够大矩阵来容纳每一帧
for i=1:mysize(2)
hold on; % 在同一图像上绘图
axis([-2,4,-2,2]); % 为了看清楚,固定坐标轴范围
plot(x,y); % 画出C点轨迹
plot(0,0,'ro'); % 画原点
plot(x(i),y(i),'b*'); % 画C点,用蓝色星号
plot(ax(i),ay(i),'ro'); % 画A点
plot(bx(i),0,'ro'); % 画B点
line([0,ax(i)],[0,ay(i)]); % 画OA连杆
line([ax(i),bx(i)],[ay(i),0]); % 画AB连杆
M(:,i)=getframe; % 获得当前一帧
hold off; % 停止连续作图,并新画出原点覆盖之前图像
plot(0,0,'ro');
end
movie(M,2); % 播放
程序运行结果如下
杆AB长于杆OA时
运行完美!
下面来验证前面对于2a=r的分析,只需稍稍改动上示程序,将a的值改为0.5再运行程序即可
r=1;a=0.5 % 使2a=r
来看改动后的效果图
杆AB与杆OA长度相同时
跟我们预想的一模一样!!!当A点开始转到y轴左侧到转出y轴左侧之间时,两个点、两条杆是重合的!
这极其有趣的图像,就包含在解出的两个小方程里!
本文完