program PROGRAMMA3;
uses crt, graph;
var v, B, q, F, Fx, Fy : real;
r, x, y, vx,vy,ax,ay : real; Gd, Gm, i: integer;
const M=500; mm=100; dt=0.005; rr=0.1; k=2;
Begin
Gd:= Detect; InitGraph(Gd, Gm, 'c:\bp\bgi');
if GraphResult <> grOk then Halt(1);
line(320,240,640,240); line(320,240,320,0); circle(320,240,5);
x:=100; y:=120; vx:=1; vy:=-2;
Repeat
begin
{--Заданние силового поля--}
(* Fy:=3; Fx:=0; *)
(* Fx:=-k*x; Fy:=-k*y; *)
(* r:=sqrt(x*x+y*y); F:=M*mm/(r*r);
Fx:=-F*x/r; Fy:=-F*y/r; *)
B:=2; q:=1; F:=B*v*q; v:=sqrt(vx*vx+vy*vy);
Fx:=F*vy/v; Fy:=-F*vx/v;
(* B:=2; q:=1; F:=B*v*q; v:=sqrt(vx*vx+vy*vy);
Fx:=F*vy/v; Fy:=-0.5-F*vx/v; *)
{--Расчет скоростей и ускорений--}
ax:=(Fx-rr*vx)/mm; ay:=(Fy-rr*vy)/mm;
vx:=vx+ax*dt; vy:=vy+ay*dt; x:=x+vx*dt; y:=y+vy*dt;
circle(round(x)+320,240-round(y),2); setcolor(12);
circle(round(x)+320,240-round(y),1); setcolor(15);
end;
until KeyPressed;
CloseGraph;
END.