|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Движение Луны вокруг Земли
Подскажите текст проги, которая обеспечит движение Луны вокруг Земли. При изменении скорости вращения луны появляется дополнительное небесное светило, маленькая блуждающая звезда.
|
#2
|
|||
|
|||
Если считать, что орбита лежит в плоскости XZ (как бы рисунок на столе), а камера (наблюдатель) смотрит на обе планеты сверху (с потолка, ось Y), то в первом приближении - это параметрическое движение по окружности (t- время, x = sin(t), z = cos(t)). Можно, конечно, написать (если ты астроном) движение по эллипсу с учётом эксцентриситета (изменение скорости от этого или от космических войн?). Очень мало исходных данных. Нужно ли менять координаты камеры (наблюдателя)?
|
#3
|
|||
|
|||
Надо просто на плоскости, чтоб один круг крутился по кругу вокруг другого, у меня крутится, но параметры я ввожу вручную в самом коде
(begin x:=x + 0.1; shape2.Left:=300 + trunc(200*cos(x)); shape2.Top:=200 – trunc(200*sin(x)) эт пример. и никак ровно по кругу не получается. |
#4
|
|||
|
|||
Код:
type TForm1 = class(TForm) Shape1: TShape; Shape2: TShape; Timer1: TTimer; // интервал 100 procedure Timer1Timer(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation uses mmsystem, Math; {$R *.dfm} var R: Real = 200; xc, yc: Integer; procedure TForm1.FormCreate(Sender: TObject); begin xc:= Shape1.Left + Shape1.Width div 2; yc:= Shape1.Top + Shape1.Height div 2; end; procedure TForm1.Timer1Timer(Sender: TObject); var t: Real; x, y: Extended; begin t:= timeGetTime / 5000.0; SinCos(t, y, x); Shape2.Left:= Round(x* R) + xc - Shape2.Width div 2; Shape2.Top:= Round(y* R) + yc - Shape2.Height div 2; end; end. Последний раз редактировалось AlexSku, 20.08.2008 в 12:01. |
#5
|
|||
|
|||
AlexSku, большое спасибо!
|