![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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, большое спасибо!
|