クランクの動きをMahematicaで見る。
2021/06/29 by Oz@SIT
クランクを図のように模式化する。図の黒い線がロッドを表し、水平の青線が天板を表している。ロッドは(0,0)の位置で天板を突き抜けている。ロッドは赤点(xc,ycでクランクとつながり、赤点はクランクの中心位置から半径rで円を描く。図のような座標系に置かれたクランク機構を考える。クランクの回転座標を(xc,yc)、ロッドの手先座標を(x,y)として、(x,y)の動く軌跡を示せ。
制約条件:
(x,y)と(xc,yc)は長さlのリンクの両端なので、(x-xc)^2+(y-yc)^2=l^2
また(x,y)と(xc,yc)、(0,0)は1直線上にあるので、(0-yc)/(0-xc)=(y-yc)/(x-xc)
これをMathematicaで一般的に書くと
eq1=(x-xc)^2+(y-yc)^2-l^2
eq2=(y0-yc)(x-xc)-(y-yc)(x0-xc)
FullSimplify[Solve[{eq10,eq20},{x,y}]]
のようになる。
(x,y)と(xc,yc)は長さlのリンクの両端なので、(x-xc)^2+(y-yc)^2=l^2
また(x,y)と(xc,yc)、(0,0)は1直線上にあるので、(0-yc)/(0-xc)=(y-yc)/(x-xc)
これをMathematicaで一般的に書くと
eq1=(x-xc)^2+(y-yc)^2-l^2
eq2=(y0-yc)(x-xc)-(y-yc)(x0-xc)
FullSimplify[Solve[{eq10,eq20},{x,y}]]
のようになる。
In[]:=
Clear[x,y,y1,l,x0,y0,r,xc,yc,eq1,eq2,a];l=10;x0=0;y0=0;y1=-3;r=2;xc=rCos[th];yc=y1+rSin[th];eq1=(x-xc)^2+(y-yc)^2-l^2;eq2=(y0-yc)(x-xc)-(y-yc)(x0-xc);a=FullSimplify[Solve[{eq10,eq20},{x,y}]];ParametricPlot[{{x,y}/.a[[1]],{x,y}/.a[[2]]},{th,0,2Pi},PlotRange9]Animate[Show[{Graphics[{CapForm["Round"],Thickness[0.03],Line[{{x,y}/.If[(xc/.thth1)<0,a[[2]],a[[1]]],{xc,yc}}]/.thth1,Blue,Thickness[0.005],Circle[{0,y1},r],Line[{{-3,0},{-0.5,0}}],Line[{{3,0},{0.5,0}}]}],ParametricPlot[{{x,y}/.a[[1]],{x,y}/.a[[2]]},{th,0,2Pi},PlotRange9]}],{th1,0,2Pi}]
Out[]=
Out[]=
図形が上と下に2つできるが、下側はロッドが下向きにある場合なので今回は無視する。
上図はy1(クランクの回転中心の天板からの距離(負)=-3の場合である。
上図はy1(クランクの回転中心の天板からの距離(負)=-3の場合である。
下図はy1(クランクの回転中心の天板からの距離(負)=-5の場合である。
In[]:=
Clear[x,y,y1,l,x0,y0,r,xc,yc,eq1,eq2,a];l=10;x0=0;y0=0;y1=-5;r=2;xc=rCos[th];yc=y1+rSin[th];eq1=(x-xc)^2+(y-yc)^2-l^2;eq2=(y0-yc)(x-xc)-(y-yc)(x0-xc);a=FullSimplify[Solve[{eq10,eq20},{x,y}]];ParametricPlot[{{x,y}/.a[[1]],{x,y}/.a[[2]]},{th,0,2Pi}]
Out[]=
下図はy1(クランクの回転中心の天板からの距離(負)=-7の場合である。
下図はy1(クランクの回転中心の天板からの距離(負)をー7から-3まで変化したとき、図形がどのように変わるかをアニメートした図である。
y1=-3の場合のxをΘの変化に伴って描いてみる。
y1=-3の場合のyをΘの変化に伴って描いてみる。
制約条件:
(x,y)と(xc,yc)は長さlのリンクの両端なので、(x-xc)^2+(y-yc)^2=l^2
また(x,y)と(xc,yc)、(0,0)は1直線上にあるので、(0-yc)/(0-xc)=(y-yc)/(x-xc)
これをMathematicaで一般的に書くと
eq1=(x-xc)^2+(y-yc)^2-l^2
eq2=(y0-yc)(x-xc)-(y-yc)(x0-xc)
FullSimplify[Solve[{eq10,eq20},{x,y}]]
のようになる。
(x,y)と(xc,yc)は長さlのリンクの両端なので、(x-xc)^2+(y-yc)^2=l^2
また(x,y)と(xc,yc)、(0,0)は1直線上にあるので、(0-yc)/(0-xc)=(y-yc)/(x-xc)
これをMathematicaで一般的に書くと
eq1=(x-xc)^2+(y-yc)^2-l^2
eq2=(y0-yc)(x-xc)-(y-yc)(x0-xc)
FullSimplify[Solve[{eq10,eq20},{x,y}]]
のようになる。