program fly_drag_anim_arrow real m,k real xnew(13),ynew(13),xold(13),yold(13) real xa(13),ya(13) 1000 write(*,*)'k=?' read(*,*)k write(*,*)'m=?' read(*,*)m write(*,*)'vx?' read(*,*)vx write(*,*)'vy?' read(*,*)vy xa(1)=2 ya(1)=0 xa(2)=1 ya(2)=1 xa(3)=1 ya(3)=0 xa(4)=-1 ya(4)=0 xa(5)=-1.5 ya(5)=1 xa(6)=-2 ya(6)=1 xa(7)=-1.5 ya(7)=0 xa(8)=-2 ya(8)=-1 xa(9)=-1.5 ya(9)=-1 xa(10)=-1 ya(10)=0 xa(11)=1 ya(11)=0 xa(12)=1 ya(12)=-1 xa(13)=2 ya(13)=0 idummy=pgopen('/xwin') call pgenv(0.0,10.0,0.0,10.0,1,0) dt=0.00001 y=1.0 x=0.0 ax=0 ay=-9.8 r=0.2 xold=x yold=y do while (y>0) v=sqrt(vx**2+vy**2) Fd=(-1)*k*v Fdx=Fd*(vx/v) Fdy=Fd*(vy/v) ax=Fdx/m ay=-9.8+Fdy/m vx=vx+ax*dt vy=vy+ay*dt x=x+vx*dt y=y+vy*dt c rotate the object at given angle do i=1,13 xnew(i)=xa(i)*(vx/v)-ya(i)*(vy/v) ynew(i)=xa(i)*(vy/v)+ya(i)*(vx/v) end do c position the rotated object do i=1,13 xnew(i)=xnew(i)+x ynew(i)=ynew(i)+y end do call pgbbuf call pgsci(0) call pgline(13,xold,yold) call pgsci(1) call pgline(13,xnew,ynew) call pgebuf do i=1,13 xold(i)=xnew(i) yold(i)=ynew(i) end do end do write(*,*) 'distance=',x,' hight=',y 2000 write(*,*)'again?(1=Yes,0=No)' read(*,*)j if(j==1)goto 1000 if(j.ne.0)goto 2000 c call pgclos end