Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
gundZOL

прорисовка земли в модели Земля вокруг Солнца

04.01.2011, 16:02. Показов 1945. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
не могу прорисовать Землю в виде параллелей и меридианов. выходит какое-то не понятное мерцание медиан. помогите пожалуйста с прорисовкой. собственно текст программы:

Pascal
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
[I]Program Space;
   Uses Graph, Crt;
   Const
     RadOrb = 250 { радиус орбиты Земли };  RadSun = 40 { радиус Солнца };
     RadGal = 100 { радиус галактики    };  RadZem = 10 { радиус Земли  };
     Naklon = 0.2          { коэффициент наклона плоскости орбиты Земли };
     PressZem = 0.8       { коэффициент сплющенности полюсов Земли     };
     Compress = 0.8        { коэффициент сжатия при переходе из         };
                           { расширения режима VGA в режим CGA          }
   Var
     ZemX, ZemY, UgMer,  PixelY,  DUgZem ,  UpDown,
     XRad, Grad, UgZem,  PixelX,  StAngle,  Ua, Ub,
     ParallelY,  Color,  ZemPix,  EndAngle,
     VisualPage, GrMode, GrError, GrDriver, i : Integer;
     Ugol,  CompressZem, Expansion,
     DUgol, Projection,  PolUgol              : Real;
 BEGIN
            { установка графического режима и проверка возможных ошибок }
   GrDriver :=VGA; GrMode := VGAHi;
   InitGraph(GrDriver, GrMode, 'C:\Program Files\FPC\bin\i386-win32');
   GrError := GraphResult; If GrError<>GrOk then Halt;
 
   SetBkColor(Black);
   SetFillStyle(1, White); { установка стиля заполнения и цвета Cолнцa }
   Ugol := 0; DUgol := 2*Pi/180; { орбитальное угловое смещение Земли   }
   UgZem := 0; DUgZem := 14;     { осевое угловое смещение Земли        }
        {--------------------------------------------------}
   VisualPage := 1;
   Repeat                     { цикл прерывается нажатием любой клавиши }
     SetVisualPage(1- (VisualPage mod 2));
                              { установка номера видимой видеостраницы  }
     VisualPage := VisualPage+1;                { листание видеостраниц }
     SetActivePage(1 - (VisualPage mod 2));
                 { установка номера невидимой (активной) видеостраницы, }
                 { используемой для построения смещенного изображения   }
     ClearDevice;                         { очистка графического экрана }
            {-----------------------------------}
     { Рисование "расходящейся" галактики }
     RandSeed:=1;         { исходное значение датчика случайных чисел }
     Expansion:=VisualPage/100; { cкорость расширения галактики       }
     For i:= 1 to VisualPage do
       begin XRad := Trunc(Expansion*RadGal*Random);
               { текущее расстояние от звезды до центра галактики     }
          PolUgol:= 2*Pi*Random-VisualPage/30;
               { текущий центральный угол положения звезды галактики  }
          PixelX := 370+Trunc(XRad*cos(PolUgol+1.8)); { координаты    }
          PixelY := 250+Trunc(XRad*0.5*sin(PolUgol)); { звезды        }
          PutPixel(PixelX, PixelY, White)          { рисование звезды }
       end;
            {-----------------------------------}
     {Рисование мерцающих звезд}
     Randomize;                { инициализация датчика случайных чисел }
 
     For i:=1 to 70 do
       PutPixel(Random(640),Random (350),White); { вспыхивающие звезды }
            {-----------------------------------}
     For i := 1 to 100 do                { Рисование орбиты }
       PutPixel(320+Round(RadOrb * cos((i+VisualPage/5)*Pi/50+0.3)),
       160+Round(RadOrb*Naklon*sin((i+VisualPage/5)*Pi/50-Pi/2)),15);
            {-----------------------------------}
     PieSlice(310, 160, 0, 360, RadSun); { Рисование Солнца }
            {-----------------------------------}
     [SIZE="4"]{ Рисование Земли (ее параллелей и меридианов) }
     Ugol := Ugol+DUgol ;      { угол поворота Земли относительно Солнца }
     Grad := Round(180*Ugol/Pi) mod 360;  { в рад.(Ugol) и в град.(Grad) }
     ZemX := 320+Round(RadOrb*cos((Ugol+Pi/2+0.3)));  { координаты       }
     ZemY:=160+Round(RadOrb*Naklon*sin(Ugol));        { центра Земли     }
     CompressZem := 2.5-cos(Ugol+0.3);
                    { коэффициент учета удаленности Земли от наблюдателя }
     ZemPix := Round(RadZem*CompressZem);         { текущий радиус Земли }
     UgZem := UgZem+DUgZem; { угол поворота Земли относительно своей оси }
 
     For i := 0 to 11 do               { рисование меридианов }
      begin
       UgMer := (UgZem+i*30) mod 360;
       If (90<UgMer) and (UgMer<270)  { установка начального и конечного }
         then begin StAngle := 90; EndAngle := 270 end     { углов дуги  }
         else begin StAngle := 270; EndAngle := 90 end; {эллипса меридиана}
       Ua := (Grad+220) mod 360; Ub := (Grad+400) mod 360;
                    { установка цветов рисования затененной и освещенной }
                    { частей меридиана                                   }
       Color := LightBlue;
       If Ua<=Ub then if (Ua<UgMer) and (UgMer<Ub) then Color := White;
       If Ua >Ub then if (Ua<UgMer) or  (UgMer<Ub) then Color := LightBlue;
       SetColor(Color);
       XRad := round((ZemPix*cos(UgMer*Pi/180)));
       Ellipse(ZemX,ZemY,StAngle,EndAngle,abs(XRad),round(PressZem*ZemPix));
      end;
 
     For i := 2 to 7 do         { рисование параллелей                     }
       begin
         XRad := abs(Round(ZemPix*sin(i*Pi/9)));
                                { большая полуось эллипса параллели        }
         UpDown := Round(ZemPix*PressZem*cos(i*Pi/9));
                                { высота параллели над плоскостью экватора }
         ParallelY := ZemY+UpDown; { координата Y центра эллипса параллели }
         SetColor(LightBlue);
         Ellipse(ZemX, ParallelY, 0, 360, XRad, Round(Naklon*XRad));
                                { затененная часть параллели               }
         SetColor(White);
         Ellipse(ZemX,ParallelY,Grad+220,Grad+400,XRad,Round(Naklon*XRad));
                                { освещенная часть параллели               }
       end;[/SIZE]
            {-----------------------------------}
     { Повторное рисование Cолнца, если оно ближе к наблюдателю, чем Земля }
     If CompressZem<2 then PieSlice(310, 160, 0, 360, RadSun);
            {-----------------------------------}
     RandSeed := VisualPage mod 12;
     For i := 1 to 250 do                        { Рисование протуберанцев }
       begin
          Projection := (1-sqr(Random))*Pi/2;
          XRad := RadSun+Round((20)*sin(Projection))-15;
          PolUgol := 2 * Pi * Random+VisualPage/20;
                        { PolUgol, XRad - полярные координаты протуберанца }
          PixelX := 310 + Round( XRad * cos(PolUgol));
          PixelY := 160 + Round( Compress * XRad * sin(PolUgol));
          PutPixel(PixelX, PixelY, LightRed)
       end;
   until KeyPressed
 END.
[/I]
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.01.2011, 16:02
Ответы с готовыми решениями:

Разработайте динамическую модель Земли, которая вращается вокруг Солнца и вокруг которой вращается Луна
2) Разработайте динамическую модель Земли, которая вращается вокруг Солнца и вокруг которой вращается Луна.

Написать программу движения 3 тел Солнца, Земли и Марса
Мне нужно написать программу движения 3 тел Солнца, Земли и Марса у меня есть программа движения 2 тел Солнца и Земли я не знаю как...

Анимация: планеты, вращающиеся вокруг Солнца
Помогите написать программу с вращающимися вокруг солнца планетами ! Буду благодарен.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.01.2011, 16:02
Помогаю со студенческими работами здесь

Спутник вращается вокруг земли, при нажатии кнопки, он переходит в эллипсоидную орбиту
Доброго времени суток. Хотел попросить помощи с задачками, похожих не нашел, создал тему. Заранее спасибо! Задача 2. Анимация:...

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

Разработайте динамическую модель: Солнца для Земли и Луны
Мне вручили задание в котором я абсолютный &quot;0&quot;((( Просьба к тем кто знает как это делать - отпишитесь!!! 3)Разработайте динамическую...

Вращение планет вокруг Солнца
program graf_1; uses graph,crt; var g,m,i:integer; size:word; p,r:pointer; errCode:integer; begin randomize; g:=detect; ...

Составить программу демонстрации движения планет вокруг Солнца
Составить программу демонстрации движения планет вокруг Солнца.


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru