1 / 1 / 1
Регистрация: 15.02.2013
Сообщений: 49
1

Движение Луны по орбите вокруг Земли

26.09.2013, 22:02. Показов 2851. Ответов 3
Метки нет (Все метки)

Добрый вечер, форумчане. Столкнулся с проблемой при написании программы, а именно:
Луна ходит по орбите все нормально, но загвоздка в том, что при уменьшении окна, должно уменьшатся или увеличиваться все его содержимое. Орбита у меня уменьшается и увеличивается, а вот Земля и Луна нет. Помоги дополнить программу.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
unit MainWin;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  TfrmMain = class(TForm)
    imgNebo: TImage;
    tmrRotate: TTimer;
    shpEarth: TShape;
    shpMoon: TShape;
    btnExit: TButton;
    procedure tmrRotateTimer(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure btnExitClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  frmMain: TfrmMain;
  MoonR, EarthR, Raduis, H:Integer;
  alfa:Real;
 
implementation
 
uses luna;
{$R *.dfm}
 
 
procedure TfrmMain.tmrRotateTimer(Sender: TObject);
begin
 shpMoon.Left:=imgNebo.Width div 2+trunc(Raduis*cos(alfa))-MoonR;
 shpMoon.Top:=imgNebo.Height div 2-trunc(Raduis*sin(alfa))-MoonR;
 alfa:=alfa+0.1;
end;
 
 
procedure TfrmMain.FormResize(Sender: TObject);
begin
  alfa:= 0;
  MoonR:=Strtoint(fmLuna.edtL.Text);
  EarthR:=strtoint(fmLuna.edtZ.Text);
  Raduis:=strtoint(fmLuna.edtO.Text);
 begin
  if frmMain.height>=frmMain.Width then
  frmMain.height:=frmMain.Width else
  frmMain.Width:=frmMain.height;
 end;
raduis:=round(strtoint(fmLuna.edtO.Text)*frmMain.Height/500) ;
end;
 
procedure TfrmMain.FormActivate(Sender: TObject);
var
 i,j:integer;
begin
frmMain.Refresh;
frmMain.Repaint;
Height:=width;
alfa:=0;
  MoonR:=Strtoint(fmLuna.edtL.Text);
  EarthR:=strtoint(fmLuna.edtZ.Text);
  Raduis:=strtoint(fmLuna.edtO.Text);
  imgNebo.Canvas.Brush.Color:=clBlack;
  imgNebo.Canvas.FloodFill(10,10,clBlack,fsBorder);
  imgNebo.Canvas.Pen.Color:=clWhite;
{рисование орбиты}
  imgNebo.Canvas.Ellipse(imgNebo.Width div 2 - Raduis,
                         imgNebo.Height div 2 - Raduis,
                         imgNebo.Width div 2 + Raduis,
                         imgNebo.Height div 2 + Raduis);
  randomize;
    for i:=1 to 100 do
  imgNebo.Canvas.Pixels[random(imgNebo.width),random (imgNebo.height)]:=clwhite;
  imgNebo.Canvas.Pixels[random(imgNebo.width),random (imgNebo.height)]:=clred;
  imgNebo.Canvas.Pixels[random(imgNebo.width),random (imgNebo.height)]:=clyellow;
  imgNebo.Canvas.Pixels[random(imgNebo.width),random (imgNebo.height)]:=clblue;
  imgNebo.Canvas.Pixels[random(imgNebo.width),random (imgNebo.height)]:=clgreen;
 
 {устанавливает Землю в центре формы}
  shpEarth.Left := imgNebo.Width div 2- EarthR;
  shpEarth.Top := imgNebo.Height div 2- EarthR;
{размеры Земли}
  shpEarth.Width := EarthR*2;
  shpEarth.Height := EarthR*2;
{устанавливаем Луну на орбите справа от Земли на той же высоте}
  shpMoon.Left:=imgNebo.Width div 2 + Raduis- MoonR ;
  shpMoon.Top:=imgNebo.Height div 2 - MoonR;
{размеры Луны}
  shpMoon.Width:=MoonR*2;
  shpMoon.Height:=MoonR*2;
end;
 
procedure TfrmMain.btnExitClick(Sender: TObject);
begin
  frmMain.imgNebo.Refresh;
  frmMain.imgNebo.Repaint;
  frmMain.Deactivate;
close;
end;
end.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.09.2013, 22:02
Ответы с готовыми решениями:

Движение Луны вокруг Земли а Земли вокруг Солнца
надо в паскале написать программу которая графически изобразит движение Луны вокруг Земли а ...

Создать модель движения Солнца вокруг орбиты, Земли вокруг Солнца, Луны вокруг земли
Вот есть набросок, что дальше? :help: Const pi = 3.14 Dim intRev As Single Private Sub...

Сделать анимацию вращения Земли вокруг Солнца одновременно с анимацией вращения Луны вокруг Земли
помогите сделать анимацию вращения земли вокруг солнца одновременно с анимацией вращения луны...

Вращение Луны вокруг Земли
Ребят, нужна помощь, вообще не шарю Delphi. Смоделируйте движение спутника вокруг Земли. Timer1...

3
2476 / 1852 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
26.09.2013, 22:06 2
Лучше уж сразу на OpenGL писать. Проблем с уменьшением точно не будет.
0
1 / 1 / 1
Регистрация: 15.02.2013
Сообщений: 49
26.09.2013, 22:30  [ТС] 3
Цитата Сообщение от angstrom Посмотреть сообщение
Лучше уж сразу на OpenGL писать. Проблем с уменьшением точно не будет.
Да, там с такими трудностями я не встречусь, а в делфи встретился и хотелось бы их миновать )
0
2476 / 1852 / 242
Регистрация: 14.09.2012
Сообщений: 5,981
Записей в блоге: 2
26.09.2013, 23:26 4
Вот и напиши на OpenGL.
Краснов - OpenGL. Графика в проектах Delphi.
Примеры - Chapter3/ex37, Chapter3/ex38.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.09.2013, 23:26

Движение материального тела с поверхности земли в направлении движущейся луны
движение материального тела с поверхности земли в направлении движущейся луны со скоростью v0 и...

Среднее расстояние между Землёй и Луной 3,84·105 км. Опреде-лите скорость Луны при её движении вокруг Земли
Среднее расстояние между Землёй и Луной 3,84·105 км. Опреде-лите скорость Луны при её движении...

Во сколько раз яркость Земли в небе Луны больше, чем полной Луны на Земле?
Можно предположить что яркость Земли пропорциональна квадрату отношения угловых размеров Земли и...

Вычислить расстояние до Луны, а так же площадь поверхности и объем Луны по сравнению с таковыми для Земли
Зная, что для Луны p0=57'2", а ее угловой радиус в это время rЛ=15'32"., вычислить расстояние до...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.