function ball2(v0,ang,k) % ボール投げの軌跡 % v0: 初速度 % ang: 投げ上げの角度(度) % k: 空気抵抗 g = 9.8; % 重力加速度 dt = 0.01; % 時間の刻み幅 s = ang*pi/180; % ラジアンに変換 % 速度の分解 vx0 = v0*cos(s); vy0 = v0*sin(s); % 位置の初期値 x = 0; y = 0; % 初期値を図に描く.タイトルやラベルも付ける plot(x,y,'o') title('Throwing ball') xlabel('x'), ylabel('y') hold on % 軌跡を残す % 速度の初期値 v = v0; vx = vx0; vy = vy0; while y >=0 % 空中にいる間は継続 x = x + vx*dt; % x方向の位置変化 y = y + vy*dt; % y方向の位置変化 vx = vx - k*v*vx*dt; % x方向の速度変化 vy = vy - g*dt - k*v*vy*dt; % y方向の速度変化 v = sqrt(vx^2 + vy^2); % 速度の修正 plot(x,y,'o') pause(dt) % 表示のためにdt秒止める end %hold off