Математическая модель движения спутника по орбите

Автор работы: Пользователь скрыл имя, 14 Декабря 2013 в 23:23, курсовая работа

Описание работы

В работе было показано, что используя законы Кеплера, его формулы и методику, можно сравнительно просто получать интересующие нас параметры невозмущенного движения спутника в любой из моментов времени. При этом были упрощены вычисления, используя известный при запуске угол x, поэтому нет необходимости первоначальной установки спутника перпендикулярно радиусу. Были получены все интересующие параметры не привлекая при этом ни закон всемирного при этом ни закон всемирного тяготения Ньютона, ни такие динамические понятия как масса, энергия, сила, момент количества движения и.т.п.

Содержание работы

Введение
Глава 1. Кеплерова орбита спутника.
Глава 2. Разработка программы.
Заключение
Библиографический список

Файлы: 1 файл

Kursovaya.doc

— 420.00 Кб (Скачать файл)

            arcAngleOffset = 1;

            this.lbSatX.Text = "Satelite X=" + Satelite.X.ToString();

            this.lbSatY.Text = "Satelite Y=" + Satelite.Y.ToString();

            graphic.Clear(Color.Black);

          //  this.BackgroundImage = global::Kepler.Properties.Resources.n501787527cfe4;

            _DrawGraphics();

            // Рисуем спутник

            graphic.DrawEllipse(new Pen(Color.Gray, 2), Satelite.X, Satelite.Y, (float)Satelite.Width, (float)Satelite.Height);

            Timer timer = new Timer();

            GlobalTimer.Interval = 275;

            timer.Interval = 100;

            GlobalTimer.Tick += GlobalTimer_Tick;

            timer.Tick += timer_Tick;

            GlobalTimer.Start();

            7

timer.Start();            

        }

        /// <summary>

        /// Фиксация точек через определённый промежуток времени таймера GlobalTimer

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void GlobalTimer_Tick(object sender, EventArgs e)

        {           

            // Рисуем точки следа спутника

            graphic.DrawEllipse(new Pen(Color.Gray, 2), Satelite.X, Satelite.Y, (float)Satelite.Width, (float)Satelite.Height);

            // Линия от земли до спутника

            graphic.DrawLine(new Pen(Color.Indigo, 1), Earth.X + 20, Earth.Y + 25, Satelite.X, Satelite.Y);

            // Линия от второго фокуса до спутника

            graphic.DrawLine(new Pen(Color.Salmon, 1), (float)(Ellipse.Width - Ellipse.Focus), Earth.Y + 25, Satelite.X, Satelite.Y);

        }

        /// <summary>

        /// Отрисовка движения спутника по таймеру

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void timer_Tick(object sender, EventArgs e)

        {

            #region Работа с лейблами

            this.lbSatX.Text = "Satelite X=" + Satelite.X.ToString();

            this.lbSatY.Text = "Satelite Y=" + Satelite.Y.ToString();

            this.lbSpeed.Text = "Speed=" + speed.ToString();

 

            #endregion

            // Выключаем таймер, когда спутник пройдёт весь путь по орбите

            if (arcAngleOffset == 361)

            {

                GlobalTimer.Stop();

                ((Timer)sender).Stop();

                return;

            }

            GraphicsPath path = new GraphicsPath();           

            // Создаём дугу эллипса, по которой идёт спутник

            path.AddArc(1, 1, (float)Ellipse.Width, (float)Ellipse.Height, 1, arcAngleOffset);

            // На конечной точке дуги будет сам спутник

            Satelite.Y = path.PathPoints[path.PointCount - 1].Y - (float)Satelite.Height / 2;

            Satelite.X = path.PathPoints[path.PointCount - 1].X - (float)Satelite.Width / 2;             

            // Рисуем след движения спутника

            graphic.DrawPath(new Pen(Color.Red, 2), path);           

            ((Timer)sender).Interval = (int)speed/100000;

            arcAngleOffset++;

        }

 

 

        private void Form1_Activated(object sender, EventArgs e)

        {

            _DrawGraphics();

        }

    }

}

 

 

 

8

 

 

Код класса, представляющего  геометрические фигуры. Geometries.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

 

namespace Kepler

{

    class Geomtries

    {

        /// <summary>

        /// Класс, хранящий значения отрисовывающегося эллипса

        /// </summary>

        public class Ellipse

        {

            /// <summary>

            /// Конструктор класса

            /// </summary>

            /// <param name="vHeight">Высота эллипса</param>

            /// <param name="vWidth">Ширина эллипса</param>

            /// <param name="x">Координата верхней левой точки по оси X ограничивающего прямоугольника</param>

            /// <param name="y">Координата верхней левой точки по оси Y ограничивающего прямоугольника</param>

            public Ellipse(double vHeight, double vWidth, float x, float y)

            {

                this.Height = vHeight;

                this.Width = vWidth;

                this.X = x;

                this.Y = y;

            }

            /// <summary>

            /// Координата верхней левой точки по оси X ограничивающего прямоугольника

            /// </summary>

            public float X;

            /// <summary>

            /// Координата верхней левой точки по оси Y ограничивающего прямоугольника

            /// </summary>

            public float Y;

            /// <summary>

            /// Высота эллипса (Ось OY)

            /// </summary>

            public double Height;

            /// <summary>

            /// Ширина эллипса (Ось OX)

            /// </summary>

            public double Width;

 

            /// <summary>

            /// Фокус элипса

            /// </summary>

            public double Focus

            {get

                {

                    if(Math.Sqrt(Math.Abs(Width * Width - Height * Height))==0)

                        return Width/2;

                    return Math.Sqrt(Math.Abs(Width * Width - Height * Height));

                }

            }

        }}}

9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 Заключение

Таким образом, было показано, что используя законы Кеплера, его формулы и методику, можно сравнительно просто получать интересующие нас параметры невозмущенного движения спутника в любой из моментов времени. При этом были упрощены вычисления, используя известный при запуске угол x, поэтому нет необходимости первоначальной установки спутника перпендикулярно радиусу. Были получены все интересующие параметры не привлекая при этом ни закон всемирного при этом ни закон всемирного тяготения Ньютона, ни такие динамические понятия как масса, энергия, сила, момент количества движения и.т.п.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

Список литературы.

Маркеев А.П. Теоретическая механика. – М.:Наука, 1990. 414с.:ил.

           

Бутиков Е.И. Закономерности Кеплеровых движений. – С-П.: Физический факультет СПбГУ, 2007. 60с.

 

Левантовский  В.И. Механика космического полета в элементарном изложении. М.: Наука, 1974

 

Рябов Ю.А. Движение небесных тел. М.: Наука, 1977

 

Бутиков Е.И. Движение космических тел в компьютерных моделях – С-П.: Физический факультет СПбГУ, 2007. 43с.

 

Бордовицына Т.В., Авдюшев В.А. Теория движения искусственных спутников Земли – Т: Издательство Томского университета, 2007. 174с.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12




Информация о работе Математическая модель движения спутника по орбите