program fly real m, k integer pgopen write(*,*)'number of gun powder?' read(*,*) num_gun_powder write(*,*)'shooting angle?' read(*,*) angle angle = angle/180 * 3.14 write(*,*)'mass?' read(*,*) m write(*,*)'air resistance?' read(*,*) k if(pgopen('/xwin')<=0) stop call pgenv(0.0,5.0,0.0,5.0,0,0) c Ek = (1/2)m*V*V Ek = 1.0 * num_gun_powder v_ini = sqrt(2*Ek/m) dt = 0.001 vx = v_ini*cos(angle) vy = v_ini*sin(angle) x = 0.0 y = 1.0 g = -9.8 do while(y >= 0.0) v_current =sqrt(vx**2 + vy**2) f_drag = (-1)*k*v_current f_drag_x = f_drag * vx/v_current f_drag_y = f_drag * vy/v_current a_drag_x = f_drag_x / m a_drag_y = f_drag_y / m c ax = 0 c ay = g ax = a_drag_x ay = g + a_drag_y vx = vx + ax*dt vy = vy + ay*dt x = x + vx*dt y = y + vy*dt call pgpt(1,x,y,20) end do call pgclos write(*,*)'final hight is:',y write(*,*)'final distance is:',x end