screen 12 hw=480 ww=640 window(-ww/2,-hw/2)-(ww/2,hw/2) dim q(3),x(4),y(4),r(3),e(4),a(4),b(4) pi=4*atn(1) x(1)=-160:y(1)=-0 x(2)=200:y(2)=-0 x(3)=0:y(3)=30 q(1)=36 q(2)=36 q(3)=-20 g=10:'радиус экранировки '=нарисуем три заряда for n=1 to 3 if sgn(q(n))>0 then cv=12 else cv=9 circle(x(n),y(n)),g:paint (x(n),y(n)),cv:circle(x(n),y(n)),g,0 next n 'генерируем опилки for n=1 to 4000 xs=-ww/2+ww*rnd:ys=-hw/2+hw*rnd 'посмотреть, не попадает-ли опилок в зону экранировки gosub zona if zn=1 then gosub opilka next n goto conec opilka: gosub pole return pole: l=5 x(4)=xs y(4)=ys for j=1 to 3 rx=x(4)-x(j) ry=y(4)-y(j) R(J)=SQR(RX^2+RY^2) E(J)=Q(J)/(R(J)*R(J)) A(J)=E(J)*(X(4)-X(J))/R(J) B(J)=E(J)*(Y(4)-Y(J))/R(J) NEXT J A(4)=A(1)+A(2)+A(3) B(4)=B(1)+B(2)+B(3) E(4)=SQR(A(4)*A(4)+B(4)*B(4)) LX=L*A(4)/E(4) LY=L*B(4)/E(4) S=S+L X(4)=X(4)+LX Y(4)=Y(4)+LY pset(xs,ys):line-(x(4),y(4)),8 return zona: zn=1 for z=1 to 3 if sqr((x(z)-xs)^2+(y(z)-ys)^2)<=(g+5) then zn=0:return next z return conec: locate 2,2:?" - to quit" wata: if inkey$<>chr$(27) then wata stop