Показать сообщение отдельно
  #6  
Старый 18.01.2009, 20:01
Аватар для KOOL
KOOL KOOL вне форума
Активный
 
Регистрация: 06.01.2008
Адрес: Рязань
Сообщения: 306
Версия Delphi: 2009
Репутация: 6150
По умолчанию

Цитата:
Сообщение от 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
__________________
РГРТУ - ФВТ - Системы Автоматизированного ПРоектирования. ت