Цитата:
Сообщение от zerg
Уравнение движения по кругу: Х^2+Y^2=R^2
|
Это уравнение не движения по кругу, а окружности. И в данном случае оно не поможет. Здесь нужно параметрическое уравнение x=r*cos(t); y=r*sin(t). Вот пример, думаю пригодится.
Код:
const centerx=200; //координаты центра
centery=200;
var rad, angle:real; //радиус полета "электрона" и угол
rE, rC:integer; //радиусы "электрона" и "ядра"
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Self.Refresh;
Canvas.Brush.Color:=$ff0000;
Canvas.Ellipse(centerx-rC, centery-rC, centerx+rC, centery+rC);
Canvas.FloodFill(centerx, centery, $ff00000, fsBorder);
Canvas.Brush.Color:=$000000;
Canvas.Ellipse(centerx+Round(rad*cos(angle))-rE, centery-Round(rad*sin(angle))-rE, centerx+Round(rad*cos(angle))+rE, centery-Round(rad*sin(angle))+rE);
Canvas.FloodFill(centerx+Round(rad*cos(angle)), centery-Round(rad*sin(angle)), $000000, fsBorder);
angle:=angle+pi/18; //+10 градусов
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
angle:=0; //исходные значения
rad:=80;
rE:=3;
rC:=30;
end;
К сожалению, неизбежно мерцание. Интервал таймера-10