Другие языки программирования и технологии

Если кто нибудь знает подскажите как рисовать землю которая крутится вокруг солнца а вокруг земли крутится луна delphi

на каждом шаге пересчитывать координаты земли
хз=хс+радиус_орбиты*cos альфа, уз=ус+радиус_орбиты*sin альфа
и так же для луны
хл=хз+радиус_орбиты*cos бета, ул=уз+радиус_орбиты*sin бета
где альфа и бета углы поворота, определяются в зависимости от скорости вращения
Просто Бирюк
Просто Бирюк
19 025
Лучший ответ
Вот программа на Pascal.ABC.
Переделать под Delphi - дело ерундовое!
uses GraphABC, Timers;

var
Xsun, Ysun, Rsun : Real; Csun : Color;
Xsol, Ysol, Rsol, Fsol, Asol, Dsol : Real; Csol : Color;
Xmon, Ymon, Rmon, Fmon, Amon, Dmon : Real; Cmon : Color;
T : Timer;

procedure Show(X, Y, R : Real; C : Color);
begin
Pen.Color := C;
Brush.Color := C;
Circle(Round(X), Round(Y), Round(R));
end;

procedure ShowAll;
begin
LockDrawing;
ClearWindow;

Xsol := Xsun + Asol * sin(Fsol);
Ysol := Ysun + Asol * cos(Fsol);
Xmon := Xsol + Amon * sin(Fmon);
Ymon := Ysol + Amon * cos(Fmon);

Show(Xsun, Ysun, Rsun, Csun);
Show(Xsol, Ysol, Rsol, Csol);
Show(Xmon, Ymon, Rmon, Cmon);

UnLockDrawing;
end;

procedure TimerTick;
begin
Fsol := Fsol + Dsol; if Fsol > 2*Pi then Fsol := Fsol - 2*Pi;
Fmon := Fmon + Dmon; if Fmon > 2*Pi then Fmon := Fmon - 2*Pi;
ShowAll;
end;

begin
Xsun := Window.Width / 2;
Ysun := Window.Height / 2;
Rsun := Min(Window.Width, Window.Height) / 10;
Csun := RGB(255, 255, 0);

Rsol := Rsun / 4;
Fsol := 0;
Asol := Rsun * 4;
Dsol := 0.01;
Csol := RGB(0, 128, 255);

Rmon := Rsol / 4;
Fmon := 0;
Amon := Rmon * 8;
Dmon := 0.1;
Cmon := RGB(64, 64, 64);

ShowAll;

T := New Timer(10, TimerTick);
T.Start;
end.
в личку пиши прога будет листа 2. Ormandiore мудрствует... тут опенгл нужен и перенос матриц

Похожие вопросы