Форум программистов, компьютерный форум CyberForum.ru

Модель движения КА в центральном поле тяготения - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Alecsei
0 / 0 / 0
Регистрация: 07.07.2013
Сообщений: 10
15.07.2013, 23:22     Модель движения КА в центральном поле тяготения #1
Модель движения КА в центральном поле тяготения
Рассмотрим модельную задачу, которая в небесной механике называется задачей двух тел и изучает движение двух материальных точек под действием силы их взаимного притяжения. В задаче двух тел учитывается только единственная сила – сила ньютоновского взаимодействия.
Для исследования движения КА относительно небесного тела предположим, что масса КА пренебрежимо мала по отношению к массе небесного тела, что приводит к ограниченной задаче двух тел.
Уравнение движение двух тел в векторной форме будет следующим:

- радиус-вектор между двумя телами
 - гравитационная константа
В задаче двух тел КА движется по орбите, уравнение которой может быть записано как
, где

p – фокальный параметр орбиты
e – эксцентриситет орбиты
 – истинная аномалия (угловое положение КА)
Параметры p и e определяют форму и размер орбиты.

Рассмотрим общий случай эллиптической орбиты, рисунок 1.


Рисунок 1 – Эллиптическая орбита

Отметим на траектории полета следующие основные параметры орбиты и КА:
1. Радиус перигея – расстояние от центра Земли до ближайшей точки орбиты

2. Радиус апогея – расстояние от центра Земли до наиболее удаленной точки орбиты

3. Большая полуось орбиты – большая полуось эллипса

4. Эксцентриситет - характеризует сжатие орбиты (е=0 круговая орбита, 1e0)

5. Радиус-вектор КА – определяет положение КА

6. Период КА – полный оборот КА по орбите

 - гравитационная постоянная Земли, =398600( км3/с2)
7. Площадь эллипса орбиты

8. Радиальная скорость КА (скорость по радиус-вектору)

9. Трансверсальная скорость КА (скорость по трансверсали к радиус-вектору)

10. Скорость КА

11. Скорость в апогее


12. Скорость в перигее

13. - угол, на который меняется положение КА за время


Задание
Разработать библиотеку для моделирования полета КА по орбите. Библиотека должна реализовывать моделирование любого числа КА находящихся на эллиптической орбите.
Построить блок-схемы основных алгоритмов библиотеки.
С помощью разработанной библиотеки промоделировать соответствующие задачи.
Оформить отчет, включающий: постановку задачи, методическую часть с описанием и распечаткой программного обеспечения, результаты расчетов в виде таблицы значений, графиков, рисунков, анализа результатов, выводы.
Рекомендуется написать класс Satellite и реализовать в нем конструктор по умолчанию, общий конструктор, функции доступа к переменным класса и функцию движения КА, которая зависит от вермени полета.
C++
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
class Satellite
{
    //основные параметры орбиты и КА
    float perigee;
    float apogee;
    float Theta;
//вспомогательные параметры орбиты
 
public:
    Satellite(float, …);
    Satellite(void){};
    void Move(float step);
 
    //функции доступа к основным параметрам орбиты и КА
    //скорость, координаты и т.д.
};
 
Рассмотрим возможный фрагмент основной программы
//инициализация OpenGL
void init(){
    //ортогональная проекция
    //gluOrtho2D(xmin, xmax, ymin, ymax);
    //очистка экрана
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 
    //трехмерная проекция экрана
    //glOrtho(xmin, xmax, ymin, ymax,zmin, zmax);
 
//Поместить объекты в один слой
    //glEnable(GL_DEPTH_TEST);
}
//Функция отрисовки трехмерной Земли
void Earth (){
    glutSolidSphere(3671,20,20);
}
 
void SolarSystem(){
    glClear(GL_COLOR_BUFFER_BIT);
    
Sun();
 
    for (int i=0;i<PlanetCount;i++)
      Orbit(Planet[i]);
 
    glFlush();
    glutSwapBuffers ();
}
 
void Move(){
    if (t<=tk){
for (int i=0;i<PlanetCount;i++)
          Planet[i].Move(tStep);
 
        t+=tStep;
        glutPostRedisplay ();
    }   
}
 
void main(int argc, char **argv){
    //инициализация Glut
    glutInit(&argc, argv);
    glutInitDisplayMode(GLUT_DOUBLE|GLUT_RGBA |GLUT_DEPTH );
    glutInitWindowPosition(50,50);
    glutInitWindowSize(700,700);
    glutCreateWindow("Orbit");
    init();
    glutDisplayFunc(SolarSystem);
    glutMouseFunc(mouse);
    glutIdleFunc(Move);
    glutMainLoop();
}
Задачи:
1. Создать модель движения КА по орбите на плоскости;
Дополнительно: построить график зависимости угла истинной аномалии от времени



2. Смоделировать движение группировки КА на эллиптических орбитах в 2D;
Дополнительно: построить графики расстояний между КА






3. Создать модель движения планет солнечной системы;
Дополнительно: построить графики расстояний между планетами



4. Создать модель перехода КА между круговыми компланарными орбитами;
Дополнительно: построить график зависимости радиус-вектора КА от времени



Комментарий: Для перехода между круговыми компланарными орбитами необходимо произвести минимум два импульса. Естественным вариантом переходной орбиты является эллипс минимальной энергии, касающейся в апогее и перигее круговых орбит. Суммарная требуемая скорость на переход вычисляется по формуле:

- приращение скорости на первой орбите
- приращение скорости на второй орбите


5. Смоделировать движения КА в трехмерном пространстве.
Дополнительно: показать вращение Земли, изобразить трехмерный спутник. За какое время спутник с орбиты высотой 150 км перейдет на орбиту с периодом 24 ч и каковы будут суммарные затраты? Добавьте в модель параметр наклонение орбиты и смоделируйте полярную орбиту, перпендикулярную плоскости XOY.





я Вот начил а дальше незнаю как делать

Добавлено через 1 час 37 минут
спасибо вам большое я тут 1 раз
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.07.2013, 23:22     Модель движения КА в центральном поле тяготения
Посмотрите здесь:

Поле first - целое число, длительность телефонного разговора в минутах; поле second - дробное число, стоимость одной минуты в гривнах C++
Определить сможет ли белый слон расположенный на поле (a,b),одним ходом пойти на поле (e,f),не попав при этом под удар чёрного коня нах.(c,d) C++
C++ Отображение движения персонажа
C++ Только константное статическое поле НЕ МОЖЕТ быть поле членом класса !
Друзья, подскажите, как в классе создать константное поле, ссылочное поле и объектное поле? C++
Программа на C++, которая переводит цветовую модель RGB в модель HSV C++
C++ Программная модель движения шариков
C++ Найти, чья сила притяжения больше (используя закон всемирного тяготения)

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
16.07.2013, 01:16     Модель движения КА в центральном поле тяготения #2
А что тут можно сказать? Поиграй в Orbiter
Что по теме теперь? У тебя есть формулы для расчёта этих орбит?
Есть? - выкладывай. Сомневаюсь, что ты взялся за это дело без теоретической подготовки.
Нет? - посмотри в документации к тому же Orbiter. А лучше вообще в интернете на тематических сайтах.

Далее. Что это за код? Твой?
Нет, конечно...Больше похоже на фрагмент из какой-то методички.
"Рассмотрим возможный фрагмент основной программы"
Почему бы в ней не посмотреть и информацию о движении планет? В любом случае код не полный.
Итак:
1) Прочитать методичку.
2) Разобраться в ней.
3) Если непонятки - выложить методичку в эту тему и повторить, что конкретно непонятно.
4) Ну и найти формулы расчёта орбит. Интересная же штука!

Добавлено через 7 минут
По поводу расчёта эллиптических орбит в 3d пространстве для системы из одной планеты и одного корабля/спутника смотри в приложении С "Расчёт орбитальных элементов" здесь: http://www.kulch.spb.ru/Files/Orbiter2010_rus.pdf
Yandex
Объявления
16.07.2013, 01:16     Модель движения КА в центральном поле тяготения
Ответ Создать тему
Опции темы

Текущее время: 06:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru