на каждом шаге пересчитывать координаты земли
хз=хс+радиус_орбиты*cos альфа, уз=ус+радиус_орбиты*sin альфа
и так же для луны
хл=хз+радиус_орбиты*cos бета, ул=уз+радиус_орбиты*sin бета
где альфа и бета углы поворота, определяются в зависимости от скорости вращения
Другие языки программирования и технологии
Если кто нибудь знает подскажите как рисовать землю которая крутится вокруг солнца а вокруг земли крутится луна delphi
Вот программа на 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.
Переделать под 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 мудрствует... тут опенгл нужен и перенос матриц
Похожие вопросы
- Как рисовать анимацию в Турбо Паскале??? Нужно создать рисунок на котором Земля вращается вокруг солнца
- 3DSMax. Подскажите как рисуя линию (line), без отрыва рисования, перемещаться по чертежу?
- Кто знает программу чтоб можно было убирать прыщи, марщины.. кто знает подскажите
- Подскажите полноценную среду программирования, которая позволяет создавать exe программы на языке...
- подскажите программу, с помощью которой можно создавать професиональные видеоэффекты или программу, в которой можно созд
- КТО знает подскажите как прогу в паскале написать с применением аски кодов
- Подскажите, как написать скрипт, который открывает ссылку в окне определенного размера. спасибо
- Кто знает, подскажите. Комп долго выключается.
- Поймал вирус,что делатьне знаю!!!!Подскажите!!!
- Подскажите программы при помощи которых можно добавить эффекты на фото) Оч нужно