program reflective_walls_skip_d_inner_sub2 real*8 x,y real x_inner(5),y_inner(5) real bar_x(5),bar_y(5) real bar_xold(5),bar_yold(5) write(*,*)'Vx?' read(*,*)vx write(*,*)'Vy?' read(*,*)vy i_dummy=pgopen('/xwin') xmin=-10 xmax=10 ymin=-10 ymax=10 r=0.2 wdth=(1+0.1)*r call pgenv(xmin-wdth,xmax+wdth,ymin-wdth,ymax+wdth,1,-1) call pgsfs(2) xc=(x_min+x_max)/2;thickness=2.0 x_inner_min=xc-0.5*thickness;x_inner_max=xc+0.5*thickness y_inner_min=-2.0;y_inner_max= 2.0 x_inner(1)=x_inner_min+wdth;y_inner(1)=y_inner_max-wdth x_inner(2)=x_inner_max-wdth;y_inner(2)=y_inner_max-wdth x_inner(3)=x_inner_max-wdth;y_inner(3)=y_inner_min+wdth x_inner(4)=x_inner_min+wdth;y_inner(4)=y_inner_min+wdth x_inner(5)=x_inner(1);y_inner(5)=y_inner(1) x=1 y=1 xold=real(x) yold=real(y) dt=0.00001 n_sig_read = 10 n_draw = 100 do i=1,1000000000 if(x>xmax) vx=(-1)*vx if(xymax) vy=(-1)*vy if(yy_bot) .and. (yx_inner_min) .and. (xx_inner_man-0.1) ) vx=(-1)*vx end if if( (x>x_inner_min) .and. (xy_bot) .and. (yy_top-0.1) ) vy=(-1)*vy end if end subroutine bouncer_bar(sig,xl,xr,wdth,bar_x,bar_y, &bar_xold,bar_yold,y_inner_min,y_inner_max) real bar_x(5),bar_y(5) real bar_xold(5),bar_yold(5) y_top=2*sig-10+y_inner_max;y_bot=2*sig-10+y_inner_min bar_x(1)=xl+wdth;bar_y(1)=y_top-wdth bar_x(2)=xr-wdth;bar_y(2)=y_top-wdth bar_x(3)=xr-wdth;bar_y(3)=y_bot+wdth bar_x(4)=xl+wdth;bar_y(4)=y_bot+wdth bar_x(5)=bar_x(1);bar_y(5)=bar_y(1) call pgbbuf call pgsci(0) call pgline(5,bar_xold,bar_yold) call pgsci(1) call pgline(5,bar_x,bar_y) call pgebuf do i=1,5 bar_xold(i)=bar_x(i);bar_yold(i)=bar_y(i) end do end