program reflective_walls_skip_d_inner real*8 x,y real x_inner(5),y_inner(5) write(*,*)'Vx?' read(*,*)vx write(*,*)'Vy?' read(*,*)vy i_dummy=pgopen('/xwin') xmin=-10 xmax=10 ymin=-10 ymax=10 r=0.3 wdth=(1+0.1)*r call pgenv(xmin-wdth,xmax+wdth,ymin-wdth,ymax+wdth,1,-1) call pgsfs(2) x_inner_min=-1.2;x_inner_max= 1.2 y_inner_min=-5.0;y_inner_max= 5.0 x_inner(1)=-1.2+wdth;y_inner(1)= 5.0-wdth x_inner(2)= 1.2-wdth;y_inner(2)= 5.0-wdth x_inner(3)= 1.2-wdth;y_inner(3)=-5.0+wdth x_inner(4)=-1.2+wdth;y_inner(4)=-5.0+wdth x_inner(5)=-1.2+wdth;y_inner(5)= 5.0-wdth call pgline(5,x_inner,y_inner) x=-9 y=-9 xold=x yold=y dt=0.0000001 n_draw = 100 do i=1,1000000000 if(x>xmax) vx=(-1)*vx if(xymax) vy=(-1)*vy if(yy_inner_min) .and. (yx_inner_min) .and. (xx_inner_man-0.1) ) vx=(-1)*vx end if if( (x>x_inner_min) .and. (xy_inner_min) .and. (yy_inner_max-0.1) ) vy=(-1)*vy end if x=x+vx*dt y=y+vy*dt if(mod(i,n_draw)==0)then call pgbbuf call pgsci(0) call pgcirc(xold,yold,r) call pgsci(1) call pgcirc(real(x),real(y),r) call pgebuf xold=real(x) yold=real(y) c write(*,*)'x,y,Vx,Vy =',x,y,vx,vy c write(*,*)'x =',x end if end do call pgclos end