橋平礼の電験三種合格講座

過去50年分以上の電験三種の問題を解いて分かった、電験三種は今も昔も変わりません。過去問を解きながら合格を目指しましょう。

MENU

物理の運動を視覚化するためのMATLABアニメーション作成ガイド(5)斜方投射

物理の運動を視覚化するためのMATLABアニメーション作成ガイド

(5)斜方投射

amazon kindleを出版しました。


(5)斜方投射

 斜方投射は水平投射と同じように横(水平)向きと縦(鉛直)向きの方向の2つに分けて考えます。
横(水平)向きは等速直線運動(x軸)
縦(鉛直)向きは等加速度直線運動(y軸)
として考えます

 横(水平)向きは一定速度で移動するので初速度vx0[m/s],初期位置x0=0 [m]とすると
水平方向の速度$v_x=v_{x0}  [m/s]$
水平方向の位置$x=v_{x0} t  [m]$

 縦(鉛直)方向は鉛直投げ上げとして考えられるので,上方向を正として加速度を$a=-g$とし,初速度$v_{y0}[m/s]$,初期位置$y_0=0 [m]$として式を書き直すと,縦(鉛直)方向を$y$軸方向として,次式のようになります。

鉛直方向の速度 $ v_y=v_{y0}-gt  [m/s]$        ・・・(1.17)
鉛直方向の位置 $ x=x_0+v_0 t-\dfrac{1}{2}g t^2[m]  $              ・・・(1.18)


図6のように、斜めに投げる速度を$v[m/s]$とすると
 鉛直方向は $v_y=v \sin \theta$
 水平方向は $v_x=v \cos \theta$
として、表すことが出来ます。

 テレビの野球放送のホームランの場面で、ボールの軌道はきれいな放物線を描きます。ホームランボールは典型的な斜方投射になります。

 

斜方投射例題

 物体を地面から45°上向きに初速度$19.6 \sqrt{2}$で投げたとき次の値を求めなさい。ただし,重力加速度は$g=9.8[m/s^2]$とし,投げる地面の位置は高さ$0[m]$とする。

 

                      <プログラム>
%斜方投射
%/******************1つめのグラフ************
figure(1);
clf%グラフクリア
g=-9.8;%重力加速度
vx0=19.6;%x軸方向初速度
vy0=19.6;%y軸方向初速度

x0=0;%初期位置

g1 = animatedline('Color','r');
g2 = animatedline('Color','b');

V= VideoWriter('斜方投射1.mp4','MPEG-4');%mp4というファイルにします。
open(V);%ビデオを描くファイルを開きます。

axis([0 4 0 80])%グラフの範囲

t = linspace(0,4,80);%0~2を100等分
y1=sqrt( (vy0*t+1.0/2.0*g*t.^2).^2+(vx0*t).^2);
y2=sqrt(vx0^2+(vy0+g*t).^2);

xlabel('時間[sec]')
ylabel('距離[m]、速度[m/s]')

t1=text(3,60,'位置')
t1=text(3,20,'速度')

 

for i=1:length(t)
    addpoints(g1,t(i),y1(i));
    addpoints(g2,t(i),y2(i));
    frame_V = getframe(gcf);% Figure のフレームのキャプチャ、gfcは現在の Figure ハンドル番号の取得
    writeVideo(V,frame_V);%Vに書き込み
    drawnow    
end
close(V);%ビデオを描くファイルを閉じます。

%/******************2つめのグラフ************
V= VideoWriter('斜方投射2.mp4','MPEG-4');%mp4というファイルにします。
open(V);%ビデオを描くファイルを開きます。
 figure(2);
 clf%グラフクリア
 xlabel('x軸方向位置[m]')
 ylabel('y軸方向位置[m]')

 axis([0 80 0 25])%グラフの範囲

    pause('on')
 t = linspace(0,4,101);%0~2を100等分
      y1=vy0*t+1.0/2.0*g*t.^2;
      x1=vx0*t;
      t1=text(10,5,'初速度='+string(vx0))

 for i=2:length(t)
    pos = [x1(i-1) y1(i-1) 2 1]; 
    if  rem(i,10)~=0 
        rectangle('Position',pos,'Curvature',[1 1],'EdgeColor','w')
    end    
    pos = [x1(i) y1(i) 2 1]; 
    rectangle('Position',pos,'Curvature',[1 1],'EdgeColor','k')

    rectangle('Position',[2,-45,3,10],'FaceColor',[1 1 1],'EdgeColor','w')
    t1=text(2,-40,' time='+string(t(i)))
    t1.Color="r"
    frame_V = getframe(gcf);% Figure のフレームのキャプチャ、gfcは現在の Figure ハンドル番号の取得
    writeVideo(V,frame_V);%Vに書き込み    
     pause(0.01)
     drawnow;
 end
 close(V);%ビデオを描くファイルを閉じます。