VERSION 5.00
Begin VB.Form Form1 
   Caption         =   "Maikelson1     form1    Эксперимент Майкельсона-Морли "
   ClientHeight    =   8295
   ClientLeft      =   7185
   ClientTop       =   2580
   ClientWidth     =   11835
   Icon            =   "Form1.frx":0000
   LinkTopic       =   "Form1"
   ScaleHeight     =   553
   ScaleMode       =   3  'Пиксель
   ScaleWidth      =   789
   Begin VB.CommandButton Command2 
      Caption         =   "About"
      Height          =   255
      Left            =   8400
      TabIndex        =   71
      Top             =   7200
      Width           =   615
   End
   Begin VB.CommandButton Command18 
      Caption         =   "Просмотр фото и видео файлов"
      Height          =   255
      Left            =   9120
      TabIndex        =   70
      Top             =   7200
      Width           =   2655
   End
   Begin VB.CheckBox Check2 
      Caption         =   "не стирать существующее изображение"
      Height          =   195
      Left            =   8280
      TabIndex        =   69
      Top             =   6720
      Width           =   3495
   End
   Begin VB.CheckBox Check1 
      Caption         =   "ET-UT, мин"
      Height          =   195
      Left            =   8400
      TabIndex        =   67
      Top             =   1200
      Width           =   1215
   End
   Begin VB.TextBox Text35 
      Height          =   285
      Left            =   11040
      TabIndex        =   61
      Text            =   "Text35"
      Top             =   6000
      Width           =   735
   End
   Begin VB.TextBox Text34 
      Height          =   285
      Left            =   11040
      TabIndex        =   60
      Text            =   "Text34"
      Top             =   5700
      Width           =   735
   End
   Begin VB.TextBox Text33 
      Height          =   285
      Left            =   11040
      TabIndex        =   59
      Text            =   "Text33"
      Top             =   5400
      Width           =   735
   End
   Begin VB.TextBox Text32 
      Height          =   285
      Left            =   11160
      TabIndex        =   58
      Text            =   "Text32"
      Top             =   4440
      Width           =   735
   End
   Begin VB.TextBox Text31 
      Height          =   285
      Left            =   10680
      TabIndex        =   57
      Text            =   "Text31"
      Top             =   5100
      Width           =   1095
   End
   Begin VB.TextBox Text30 
      Height          =   285
      Left            =   11160
      TabIndex        =   56
      Text            =   "Text30"
      Top             =   4080
      Width           =   735
   End
   Begin VB.TextBox Text29 
      Height          =   285
      Left            =   10680
      TabIndex        =   55
      Text            =   "Text29"
      Top             =   4800
      Width           =   1095
   End
   Begin VB.TextBox Text25 
      Height          =   285
      Left            =   10080
      TabIndex        =   54
      Text            =   "Text25"
      Top             =   6000
      Width           =   735
   End
   Begin VB.TextBox Text24 
      Height          =   285
      Left            =   10080
      TabIndex        =   53
      Text            =   "Text24"
      Top             =   5700
      Width           =   735
   End
   Begin VB.TextBox Text23 
      Height          =   285
      Left            =   10080
      TabIndex        =   52
      Text            =   "Text23"
      Top             =   5400
      Width           =   735
   End
   Begin VB.TextBox Text22 
      Height          =   285
      Left            =   9360
      TabIndex        =   51
      Text            =   "Text22"
      Top             =   4440
      Width           =   735
   End
   Begin VB.CommandButton Command3 
      Caption         =   "Задать интервал таймеру, с"
      Height          =   255
      Left            =   8400
      TabIndex        =   47
      Top             =   480
      Width           =   2535
   End
   Begin VB.TextBox Text20 
      Height          =   285
      Left            =   11040
      TabIndex        =   46
      Text            =   "1"
      Top             =   480
      Width           =   735
   End
   Begin VB.TextBox Text19 
      Height          =   285
      Left            =   10800
      TabIndex        =   45
      Text            =   "Text19"
      Top             =   3360
      Width           =   975
   End
   Begin VB.TextBox Text18 
      Height          =   285
      Left            =   8880
      TabIndex        =   40
      Text            =   "Text18"
      Top             =   3360
      Width           =   975
   End
   Begin VB.CommandButton Command13 
      Caption         =   "Продолжить"
      Height          =   255
      Left            =   10200
      TabIndex        =   36
      Top             =   3720
      Width           =   1575
   End
   Begin VB.CommandButton Command12 
      Caption         =   "Остановить"
      Height          =   255
      Left            =   8400
      TabIndex        =   35
      Top             =   3720
      Width           =   1695
   End
   Begin VB.TextBox Text16 
      Height          =   285
      Left            =   10800
      TabIndex        =   33
      Text            =   "0,1"
      Top             =   3000
      Width           =   615
   End
   Begin VB.CommandButton Command11 
      Caption         =   "Начать движение с шагом "
      Height          =   255
      Left            =   8400
      TabIndex        =   32
      Top             =   3000
      Width           =   2295
   End
   Begin VB.CommandButton Command10 
      Caption         =   "Включить таймер даты"
      Height          =   255
      Left            =   8400
      TabIndex        =   31
      Top             =   120
      Width           =   2175
   End
   Begin VB.TextBox Text15 
      Height          =   285
      Left            =   9120
      TabIndex        =   28
      Text            =   "Text15"
      Top             =   6000
      Width           =   735
   End
   Begin VB.TextBox Text14 
      Height          =   285
      Left            =   9120
      TabIndex        =   27
      Text            =   "Text14"
      Top             =   5700
      Width           =   735
   End
   Begin VB.TextBox Text13 
      Height          =   285
      Left            =   9120
      TabIndex        =   26
      Text            =   "Text13"
      Top             =   5400
      Width           =   735
   End
   Begin VB.TextBox Text12 
      Height          =   285
      Left            =   9360
      TabIndex        =   25
      Text            =   "Text12"
      Top             =   4080
      Width           =   735
   End
   Begin VB.CommandButton Command8 
      Caption         =   "Выключить"
      Height          =   255
      Left            =   10680
      TabIndex        =   23
      Top             =   120
      Width           =   1095
   End
   Begin VB.TextBox Text10 
      Height          =   285
      Left            =   10800
      TabIndex        =   21
      Text            =   "Text10"
      Top             =   2280
      Width           =   975
   End
   Begin VB.TextBox Text9 
      Height          =   285
      Left            =   9000
      TabIndex        =   20
      Text            =   "Text9"
      Top             =   2280
      Width           =   975
   End
   Begin VB.TextBox Text8 
      Height          =   285
      Left            =   9600
      TabIndex        =   19
      Text            =   "Text8"
      Top             =   1200
      Width           =   615
   End
   Begin VB.TextBox Text7 
      Height          =   285
      Left            =   11160
      TabIndex        =   18
      Text            =   "48,7"
      Top             =   1200
      Width           =   615
   End
   Begin VB.TextBox Text6 
      Height          =   285
      Left            =   11160
      TabIndex        =   16
      Text            =   "44,5"
      Top             =   840
      Width           =   615
   End
   Begin VB.CommandButton Command4 
      Caption         =   "Показать текущее положение Земли"
      Height          =   255
      Left            =   8400
      TabIndex        =   14
      Top             =   2640
      Width           =   3375
   End
   Begin VB.TextBox Text5 
      Height          =   285
      Left            =   9480
      TabIndex        =   13
      Text            =   "+3"
      Top             =   840
      Width           =   495
   End
   Begin VB.TextBox Text4 
      Height          =   285
      Left            =   10200
      TabIndex        =   10
      Text            =   "Text4"
      Top             =   1920
      Width           =   1575
   End
   Begin VB.TextBox Text3 
      Height          =   285
      Left            =   10800
      TabIndex        =   8
      Text            =   "Text3"
      Top             =   1560
      Width           =   975
   End
   Begin VB.TextBox Text2 
      Height          =   285
      Left            =   8880
      TabIndex        =   7
      Text            =   "Text2"
      Top             =   1560
      Width           =   975
   End
   Begin VB.Timer Timer1 
      Left            =   10440
      Top             =   0
   End
   Begin VB.CommandButton Command1 
      Caption         =   "Вычислительный эксперимент на модели"
      Height          =   255
      Left            =   8280
      TabIndex        =   6
      Top             =   7560
      Width           =   3495
   End
   Begin VB.CommandButton Command9 
      Caption         =   "Моделирование интерференции"
      Height          =   255
      Left            =   8280
      TabIndex        =   5
      Top             =   7920
      Width           =   2655
   End
   Begin VB.TextBox Text21 
      Height          =   285
      Left            =   11400
      TabIndex        =   4
      Text            =   "10"
      Top             =   6360
      Width           =   495
   End
   Begin VB.CommandButton Command6 
      Caption         =   "Сохранить с №"
      Height          =   255
      Left            =   10080
      TabIndex        =   3
      Top             =   6360
      Width           =   1335
   End
   Begin VB.CommandButton Command5 
      Caption         =   "Очистить рисунок"
      Height          =   255
      Left            =   8400
      TabIndex        =   2
      Top             =   6360
      Width           =   1575
   End
   Begin VB.PictureBox Picture1 
      AutoRedraw      =   -1  'True
      BackColor       =   &H8000000E&
      ForeColor       =   &H80000008&
      Height          =   8250
      Left            =   45
      ScaleHeight     =   546
      ScaleMode       =   3  'Пиксель
      ScaleWidth      =   546
      TabIndex        =   1
      Top             =   0
      Width           =   8250
   End
   Begin VB.CommandButton Command16 
      Caption         =   "Выход"
      Height          =   255
      Left            =   11040
      TabIndex        =   0
      Top             =   7920
      Width           =   735
   End
   Begin VB.Line Line1 
      X1              =   552
      X2              =   792
      Y1              =   472
      Y2              =   472
   End
   Begin VB.Label Label27 
      Caption         =   "Vobs (экваториальная), м/с "
      Height          =   255
      Left            =   8400
      TabIndex        =   68
      Top             =   5100
      Width           =   2175
   End
   Begin VB.Label Label26 
      Caption         =   " BettaGeoObs"
      Height          =   255
      Left            =   10080
      TabIndex        =   66
      Top             =   4440
      Width           =   1095
   End
   Begin VB.Label Label25 
      Caption         =   "Vgeo (эклиптическая), м/с"
      Height          =   255
      Left            =   8400
      TabIndex        =   65
      Top             =   4800
      Width           =   2175
   End
   Begin VB.Label Label24 
      Caption         =   " BettaGelioGeo"
      Height          =   255
      Left            =   8280
      TabIndex        =   64
      Top             =   4440
      Width           =   1095
   End
   Begin VB.Label Label23 
      Caption         =   "AlfaGelioGeo"
      Height          =   255
      Left            =   8400
      TabIndex        =   63
      Top             =   4080
      Width           =   975
   End
   Begin VB.Label Label22 
      Caption         =   " ="
      Height          =   255
      Left            =   10800
      TabIndex        =   62
      Top             =   6030
      Width           =   375
   End
   Begin VB.Label Label21 
      Caption         =   "VZ, м/с"
      Height          =   255
      Left            =   8400
      TabIndex        =   50
      Top             =   6030
      Width           =   735
   End
   Begin VB.Label Label20 
      Caption         =   "VY, м/с"
      Height          =   255
      Left            =   8400
      TabIndex        =   49
      Top             =   5730
      Width           =   735
   End
   Begin VB.Label Label19 
      Caption         =   "VX, м/с"
      Height          =   255
      Left            =   8400
      TabIndex        =   48
      Top             =   5400
      Width           =   735
   End
   Begin VB.Label Label18 
      Caption         =   "Дата"
      Height          =   255
      Left            =   8400
      TabIndex        =   44
      Top             =   3360
      Width           =   615
   End
   Begin VB.Label Label17 
      Caption         =   "время LT"
      Height          =   255
      Left            =   9960
      TabIndex        =   43
      Top             =   1560
      Width           =   855
   End
   Begin VB.Label Label16 
      Caption         =   "Дата"
      Height          =   255
      Left            =   8400
      TabIndex        =   42
      Top             =   1560
      Width           =   495
   End
   Begin VB.Label Label15 
      Caption         =   "время UT"
      Height          =   255
      Left            =   9960
      TabIndex        =   41
      Top             =   3360
      Width           =   855
   End
   Begin VB.Label Label14 
      Caption         =   " +"
      Height          =   255
      Left            =   9840
      TabIndex        =   39
      Top             =   6030
      Width           =   255
   End
   Begin VB.Label Label13 
      Caption         =   " +"
      Height          =   255
      Left            =   9840
      TabIndex        =   38
      Top             =   5730
      Width           =   255
   End
   Begin VB.Label Label12 
      Caption         =   " ="
      Height          =   255
      Left            =   10800
      TabIndex        =   37
      Top             =   5400
      Width           =   255
   End
   Begin VB.Label Label11 
      Caption         =   " час"
      Height          =   255
      Left            =   11400
      TabIndex        =   34
      Top             =   3000
      Width           =   375
   End
   Begin VB.Label Label10 
      Caption         =   "LMST"
      Height          =   255
      Left            =   10200
      TabIndex        =   30
      Top             =   2280
      Width           =   615
   End
   Begin VB.Label Label9 
      Caption         =   "GMST"
      Height          =   255
      Left            =   8400
      TabIndex        =   29
      Top             =   2280
      Width           =   615
   End
   Begin VB.Label Label8 
      Caption         =   " +"
      Height          =   255
      Left            =   9840
      TabIndex        =   24
      Top             =   5400
      Width           =   255
   End
   Begin VB.Label Label7 
      Caption         =   "часовой пояс"
      Height          =   255
      Left            =   8400
      TabIndex        =   22
      Top             =   840
      Width           =   1095
   End
   Begin VB.Label Label6 
      Caption         =   " широта obs"
      Height          =   255
      Left            =   10200
      TabIndex        =   17
      Top             =   1200
      Width           =   975
   End
   Begin VB.Label Label5 
      Caption         =   "долгота obs"
      Height          =   255
      Left            =   10200
      TabIndex        =   15
      Top             =   840
      Width           =   975
   End
   Begin VB.Label Label4 
      Caption         =   " ="
      Height          =   255
      Left            =   10800
      TabIndex        =   12
      Top             =   5730
      Width           =   255
   End
   Begin VB.Label Label3 
      Caption         =   " AlfaGeoObs"
      Height          =   255
      Left            =   10200
      TabIndex        =   11
      Top             =   4080
      Width           =   975
   End
   Begin VB.Label Label2 
      Caption         =   "JDut (юлианская дата)"
      Height          =   255
      Left            =   8400
      TabIndex        =   9
      Top             =   1920
      Width           =   1695
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
' 23_11_21 убрал на форме 4 повторное моделирование сплошного эффекта Доплера со смещением координат 2-го фронта волны, вылетающего из
' лазера, а на форме 3 добавил еще два варианта расчета начальных фаз двух лучей
' 02_05_21 убрал на форме 4 эффект Доплера на стеклах и влияние частоты на эквивалентную плотность среды, где использовал коэффициент
' k = 6 * 10 ^ -17 ед. плотности на Гц (для теста k = 6 * 10 ^ -5 , т.е. увеличино в 10^12 раз) коэффициент изменения оптической плотности
' например, если учесть дисперсию от частоты v1(11) (в Гц) для расчета плотности, то P22(11) = P21(11) + (P21(11) - 1) * (v1(11) - v0) * k
' и заменил расчет при сплошном эффекте Доплера расчет скорости по плотности на сохраненные значения Vs1(i) и Vs2(i)
' 24_04_21 добавил на форме 4 повторный расчет сплошного эффекта доплера и влияние плотности среды на частоту света при неизменной его скорости, а
' на форме 3 добавил несколько вариантов расчета начальных фаз двух лучей
' 10_01_21 убрал на форме 3 проверку сделанного расчета смещения фронтов, а на форме 4 возвращение этих проверенных результатов на форму 3

Private Sub Command2_Click()
Form2.Show
End Sub

Private Sub Form_Load()
Picture1.BackColor = RGB(255, 255, 255) '&H8000000E
pi = 3.14159265358979: kUgol = 180 / pi: MK = 1000000: MF = 10 ^ 9  '  масштабные коэффициенты
Vsv = 299790000#: '                                                   скорость света в метрах в секунду
Command5_Click '                                                      очистить рисунок
kodDMY = 0: HourNewDay = 0 '                                          ИСПОЛЬЗУЕМ ГРИГОРИАНСКИЙ КАЛЕНДАРЬ ОТ 0 ЧАСОВ
For i = 0 To 1  '                               дней в месяце для Юлианского (i=0) и Григорианского (i=1) календарей
IDk(i, 1) = 31: IDk(i, 2) = 28: IDk(i, 3) = 31: IDk(i, 4) = 30
IDk(i, 5) = 31: IDk(i, 6) = 30: IDk(i, 7) = 31: IDk(i, 8) = 31
IDk(i, 9) = 30: IDk(i, 10) = 31: IDk(i, 11) = 30: IDk(i, 12) = 31
Next i
For i = 1 To 11: IDk(2, i) = 30: Next i '      для Египетского календаря
IDk(2, 12) = 35
J1900 = 2415020: J2000 = 2451545 '             Юлианская дата для эпох 12h 0.1.1900 и 12h 1.1.2000
Betta2000 = 23.43929111 / kUgol '              наклон экватора из EQUECL  4.06.2013
sekS = 86400: sekG = 31557600 '                секунд в сутках и секунд в году
W(31) = 2 * pi / sekG: W(32) = 2 * pi / sekS ' угловая скорость обращения Земли вокруг Солнца и вращения вокруг своей оси
Timer1.Interval = 100: Timer1.Enabled = True 'False
End Sub

Private Sub Form_Activate() 'выполняется при активации формы, т.к. масштаб ML может быть изменен на других формах
ML = 30 * 10 ^ 9 '           метров в сантиметре картинки  (Земля и Солнце рисуются без этого масштаба)
End Sub

Private Sub Command3_Click() '           Задать интервал таймеру даты в миллисекундах
Timer1.Interval = Text20.Text * 1000 '   переводим секунды в миллисекунды
End Sub

Private Sub Command8_Click() 'отключить таймер даты
Timer1.Enabled = False
End Sub

Private Sub Command10_Click() 'включить таймер даты
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer() '          по таймеру считываются текущие дата и время компьютера и преводятся в юлианскую дату
Text2.Text = Date: Text3.Text = Time 'это дата и время UT для своего часового пояса, т.е. LT
Param
End Sub

Private Sub Param() '          считываем в окошках дату и время и переводим их в юлианскую дату
On Error GoTo 330
G = Text5.Text: ObsL = Text6.Text: ObsB = Text7.Text 'часовой пояс и географические долгота и широта обсерватории, т.е. места с установкой
Info = Text2.Text: Info1 = Mid(Info, 3, 1): kod(1) = 1: If Info1 = "." Then kod(1) = 2 'если дата двузначное число, то kod(1)=2
IDold = Mid(Info, 1, kod(1))
Info1 = Mid(Info, kod(1) + 4, 1): kod(2) = 1: If Info1 = "." Then kod(2) = 2 '                   если месяц двузначное число, то kod(2)=2
IMold = Mid(Info, kod(1) + 2, kod(2)): IGold = Mid(Info, kod(1) + kod(2) + 3, 4) '  у меня компьютер выдает и то и то только как двузначные

Info = Text3.Text: Info1 = Mid(Info, 3, 1): kod(1) = 1: If Info1 = ":" Then kod(1) = 2 'если часы двузначное число, то kod(1)=2
TextHour = Mid(Info, 1, kod(1)): TextMin = Mid(Info, kod(1) + 2, 2): TextSek = Mid(Info, kod(1) + 5, 4)
IDold = IDold + TextHour / 24 + TextMin / 24 / 60 + TextSek / 24 / 60 / 60
JD = DMY_JD(IDold, IMold, IGold) '                  переводим Григорианскую дату по местному времени в Юлианскую (JDlt)
JDut = JD - G / 24: Text4.Text = JDut '             Юлианская дата по всемирному времени
JD = JDut: JD0 = JDut
GoTo 350
330: MsgBox "Введите правильно дату", , "Maikelson"
350: End Sub

Private Sub Command4_Click() '             показать текущее положение Земли
On Error GoTo 330
If Timer1.Enabled = False Then Param '     определяем JD и JD0 для даты заданной в окошке
GelioEclip '                               рассчитываем для этой даты ГЕЛИОцентрические ЭКЛИПтические координаты и скорости
GoTo 350
330: MsgBox "Введите правильно дату", , "Maikelson"
350: End Sub

Private Sub Command11_Click() '           показать движение с заданным шагом
On Error GoTo 80
Timer1.Enabled = False: kodEnd = 0 '  отключаем таймер и код остановки
10:
JD0 = JD0 + Text16.Text / 24: JD = JD0: JD02 = JD0: Text4.Text = JD
DateTime '                   переводим Юлианскую дату в дату по Григорианскому календарю с дробной частью дня и выводим их в свои окошки
GelioEclip '                 рассчитываем гелиоцентрические эклиптические координаты Земли
If kodEnd = 1 Then GoTo 90
Do While DoEvents() ' идем на 10, после обработки сообщений в очереди
GoTo 10 '             операционной системы, а если будет сообщение от кнопки <Остановить>,
Loop '                то kodEnd будет равен 1 и на следующем шаге будет уже GoTo 90
GoTo 90
80: MsgBox "Ошибка решения", , "Maikelson"
90: End Sub

Private Sub Command12_Click() 'остановить движение
kodEnd = 1
End Sub

Private Sub Command13_Click() 'продолжить движение
kodEnd = 0: JD0 = JD02: Command11_Click
End Sub

Private Sub DateTime() '                   переводим Юлианскую дату в дату по Григорианскому календарю с дробной частью дня
Call JD_DMY(JD0)
IDold = Fix(IDnew) '                                                                                   это целая частью дня
Info = Format(IDold, "00") & "." & Format(IMnew, "00") & "." & Format(IGnew, "0000"): Text18.Text = Info
HourMin (IDnew) '                                        дробную часть дня переводим в часы, минуты и секунды по времени UT
Info = Format(TextHour, "00") & ":" & Format(TextMin, "00") & ":" & Format(TextSek, "00"): Text19.Text = Info
End Sub


Private Sub GelioEclip()
dT = 0: If Check1.Value = 1 Then dT = ETminusUT1() ' если отмечен этот чекбокс, то находим dT для заданной даты JD, которая равна JD0
Text8.Text = Fix(MK * dT / 60) / MK
JD = JD0 + dT / 24 / 3600 '                  прибавляем поправку ETminusUT и находим JDet для RasParamJPL0
'находим по теории JPL0 для JD координаты Солнца и Земли в ЭКЛиптической ГЕЛИОцентрической системе координат стандартной эпохи J2000
X(0) = 0: Y(0) = 0: Z(0) = 0 '            координаты Солнца
i = 3: RasParamJPL0 '                     находим параметры орбиты барицентра Земля-Луна в эпохе J2000
RasKoordinat '                            получаем X(I) Y(I) Z(I) барицентра Земля-Луна в эпохе J2000
Alfa1 = ArcTangensR(X(3), Y(3)) '                    находим по координатам Земли ее угловое положения относительно Солнца
Text12.Text = Alfa1 * kUgol: Text22.Text = Fix(MK * Betta0(3) * kUgol) / MK ' положение Земли в полярных координатах

' Text26.Text = X(3) / MK: Text27.Text = Y(3) / MK: Text28.Text = Z(3) / MK:' в декартовой системе эти координаты тут никому не интересны
' убрал расчет преобразования координат из одной эпохи в другую, чтобы учесть прецессию, т.е. PMATECL PMATEQU PRECART
' т.к. разность в угле поворота Земли при этом получается около 0,3 градуса, что для этих расчетов не существенно
' убрал так же функцию DMY_DMY, т.к. дату я изменяю только в формате JD, а там после этого ничего уточнять не надо

'                                                  это расчет скоростей по подпрограмме RasSkorosty в программе Solsys
m = 1.98976 * 10 ^ 30: c = 6.67259 * 10 ^ -11 '    масса Солнца и гравитационная постоянная
i = 3: P = R0sr(i) * (1 - Eks0(i) * Eks0(i))
a = Sqr(c * m / P) * Eks0(i) * Sin(UgolV(i))
b = Sqr(c * m / P) * (1 + Eks0(i) * Cos(UgolV(i)))
VX21(i) = X(i) * a / Rsr(i) + b * (-Sin(UgolU(i)) * Cos(AlfaU0(i)) - Cos(UgolU(i)) * Sin(AlfaU0(i)) * Cos(Betta0(i)))
VY21(i) = Y(i) * a / Rsr(i) + b * (-Sin(UgolU(i)) * Sin(AlfaU0(i)) + Cos(UgolU(i)) * Cos(AlfaU0(i)) * Cos(Betta0(i)))
VZ21(i) = Z(i) * a / Rsr(i) + b * Cos(UgolU(i)) * Sin(Betta0(i))
V(31) = Sqr(VX21(i) * VX21(i) + VY21(i) * VY21(i) + VZ21(i) * VZ21(i))
Text13.Text = VX21(3): Text14.Text = VY21(3): Text15.Text = Fix(MK * VZ21(3)) / MK

'GoTo 30'                  ПРОПУСКАЕМ АЛЬТЕРНАТИВНЫЙ РАСЧЕТ
'                    ВООБЩЕ-ТО ТАК РАССЧИТАТЬ БЫЛО БЫ ПРОЩЕ, А ПОГРЕШНОСТЬ КОПЕЕЧНАЯ
'V(31) = Lae * W(31) '                         V(31) средняя скорость по орбите без учета эксцентриситета
'VZ21(13) = V(31) * Sin(Betta0(3)) * Cos(Alfa1 - AlfaU0(3)) ' '             ЕСЛИ УЧЕСТЬ AlfaU0(3)= -5 градусов
'V(33) = Sqr(V(31) * V(31) - VZ21(13) * VZ21(13))
'VX21(13) = -V(33) * Sin(Alfa1): VY21(13) = V(33) * Cos(Alfa1):
'Text13.Text = VX21(13): Text14.Text = VY21(13): Text15.Text = Fix(MK * VZ21(13)) / MK
'30:
'                            для топоцентрической системы находим местное звездное время и координаты обсерватории
R = 6378140 '                                 радиус Земли в метрах
GMST = LMST(JD0 - 2400000.5) '                Гринвичское звездное время для обекта в эпоху JD
GMST = 24 * FRAC2(GMST / 24) '                получается от 0 до 24 часов по зимнему времени
Text9.Text = Fix(GMST * MK) / MK
ObsLMST = GMST + ObsL / 15 '                  местное звездное время, т.е. на долготе обсерватории
If ObsLMST > 24 Then ObsLMST = ObsLMST - 24 ' получается от 0 до 24 часов по зимнему времени
Text10.Text = Fix(ObsLMST * MK) / MK '        ObsLMST * 15 это будет местное звездное время в градусах
Call XYZ(12, ObsLMST * 15, ObsB, R) '         12- будут ГЕО ЭКВ координаты обсерватории для JD (или J2000???) (углы в градусах)
X(16) = X(12): Y(16) = Y(12): Z(16) = Z(12)
i = 16: Call EQUECL((JD0 - J2000) / 36525) '  16- будут ГЕО ЭКЛ координаты обсерватории для JD (т.к. JD-J2000 то получается JD)
'Text36.Text = X(16) / MK: Text37.Text = Y(16) / MK: Text38.Text = Z(16) / MK ' эти декартовы координаты тут никому не интересны

V(30) = R * W(32) '                           линейная скорость обращения Земли вокруг своей оси
V(32) = R * Cos(ObsB / kUgol) * W(32) '       линейная скорость обращения Земли вокруг своей оси на широте установки (в экваториальной плоскости)
R0 = Sqr(X(16) * X(16) + Y(16) * Y(16)) '     растояние от центра Земли до установки на ее широте в эклиптической плоскости
Alfa2 = ArcTangensR(X(16), Y(16)) '           эклиптическая долгота установки в радианах
Betta = ArcTangensR(R0, Z(16)) '              эклиптическая широта установки в радианах
VZ21(23) = -V(32) * Sin(Betta2000) * Sin(Alfa2) ' здесь будет минус, т.к. угол узла восхождения экватора будет 180 градусов
V(34) = Sqr(V(32) * V(32) - VZ21(23) * VZ21(23))
VX21(23) = -V(34) * Sin(Alfa2): VY21(23) = V(34) * Cos(Alfa2):

Text30.Text = Alfa2 * kUgol: Text32.Text = Fix(MK * Betta * kUgol) / MK
Text29.Text = V(31): Text31.Text = V(32)
Text23.Text = VX21(23): Text24.Text = VY21(23): Text25.Text = Fix(MK * VZ21(23)) / MK
VX21(33) = VX21(3) + VX21(23): VY21(33) = VY21(3) + VY21(23): VZ21(33) = VZ21(3) + VZ21(23)
Text33.Text = VX21(33): Text34.Text = VY21(33): Text35.Text = Fix(MK * VZ21(33)) / MK

Risunok11
GoTo 350
330: MsgBox "Введите правильно данные", , "Maikelson"
350: End Sub

Private Sub Risunok11() '               ОБЪЕКТЫ ВСЕГДА РИСУЕМ В ГЕЛИО ЭКЛ СИСТЕМЕ КООРДИНАТ В ЭПОХЕ J2000
If Check2.Value = 0 Then Picture1.Cls ' очистить рисунок
Risunok10
i = 3: '                                рисуем Землю, Солнце и обсерваторию в ГЕЛИО ЭКЛ координатах эпохи даты в плоскости X - Y
Picture1.FillStyle = 1 '                                     Земля
Picture1.Circle (X(i) / ML + 3, Y(i) / ML - 3), 1.8, RGB(0, 0, 255) '        окружность Земли радиусом 1,8 см
Picture1.Circle (X(i) / ML + 3, Y(i) / ML + 0.25 - 3), 1.8, 1, pi, 0.01 '    дуга экватора'RGB(200, 200, 200)
Picture1.Line (X(i) / ML - 0.2 + 3, Y(i) / ML + 0.5 - 3)-(X(i) / ML + 0.2 + 3, Y(i) / ML + 0.5 - 3), 1 ' крестик
Picture1.Line (X(i) / ML + 3, Y(i) / ML + 0.3 - 3)-(X(i) / ML + 3, Y(i) / ML + 0.7 - 3), 1 '             крестик
'                                                            обсерватория (установка)
Picture1.Circle (X(3) / ML + X(16) * 1.2 / R + 3, Y(3) / ML + Y(16) * 1.2 / R - 3), 0.1, RGB(255, 0, 0) ' точка
Picture1.FillStyle = 0 '                                       Солнце
Picture1.FillColor = RGB(255, 255, 0)
Picture1.Circle (X(0) / ML + 3, Y(0) / ML - 3), 0.6, RGB(255, 255, 0)

Picture1.Line (X(0) / ML + 3, Y(0) / ML - 3)-(X(i) / ML + 3, Y(i) / ML - 3), RGB(0, 0, 255) 'радиус-вектор с Земли на Солнце

Picture1.Line (X(3) / ML + X(16) * 1.2 / R + 3, Y(3) / ML + Y(16) * 1.2 / R - 3)-(X(3) / ML + X(16) * 1.2 / R + 3 + VX21(33) / 10000, Y(3) / ML + Y(16) * 1.2 / R - 3), RGB(255, 0, 0) ' вектор скорости
Picture1.Line (X(3) / ML + X(16) * 1.2 / R + 3, Y(3) / ML + Y(16) * 1.2 / R - 3)-(X(3) / ML + X(16) * 1.2 / R + 3, Y(3) / ML + Y(16) * 1.2 / R - 3 + VY21(33) / 10000), RGB(255, 0, 0) ' вектор скорости

'                       рисуем Землю, Солнце и обсерваторию в ГЕЛИО ЭКЛ координатах эпохи даты в плоскости радиус-вектор - Z
Picture1.FillStyle = 0 '                                       Солнце
Picture1.FillColor = RGB(255, 255, 0)
Picture1.Circle (8.5, 5), 0.6, RGB(255, 255, 0)
Picture1.FillStyle = 1 '                                       Земля
Picture1.Circle (-5, 5), 4.2, RGB(0, 0, 255)      '                     рисуем окружность Земли радиусом 4,2 см
X(41) = R * Sin(Betta2000) * Sin(Alfa1): Betta1 = ArcSinus(X(41) / R) ' Betta1 это угол наклона Земной оси в этой плоскости
Y(41) = R * Cos(Betta1)
Picture1.Line (-X(41) * 4.2 / R - 5, Y(41) * 4.2 / R + 5)-(X(41) * 4.2 / R - 5, -Y(41) * 4.2 / R + 5), 1 ' рисуем ось Земли
'                                                            обсерватория (установка)
Z(18) = Z(16): X(18) = -R0 * Cos(Alfa2 - Alfa1)
Picture1.Circle (-5 + X(18) * 4.2 / R, 5 + Z(18) * 4.2 / R), 0.2, RGB(255, 0, 0) ' точка на поверхности Земли
JD = JD0 + 0.5 + G / 24
If JD - Fix(JD) > 0.25 And JD - Fix(JD) < 0.75 Then
Picture1.Line (-5 + X(18) * 4.2 / R, 5 + Z(18) * 4.2 / R)-(8.5, 5), RGB(0, 0, 255) 'радиус-вектор с установки на Земле на Солнце
End If
Picture1.Line (-5 + X(18) * 4.2 / R, 5 + Z(18) * 4.2 / R)-(-5 + X(18) * 4.2 / R, 5 + Z(18) * 4.2 / R + VZ21(33) / 10000), RGB(255, 0, 0) ' вектор скорости
End Sub

Private Sub Command5_Click() '                          Очистить картинку
Picture1.Cls
Picture1.Scale (-10, 10)-(10, -10)
Risunok10
End Sub

Private Sub Risunok10() '   Очищаем рисунок и наносим оси координат
For i = -10 To 10
For j = -10 To 10
Picture1.Line (-i, j)-(i, j), RGB(200, 200, 200)
Picture1.Line (i, -j)-(i, j), RGB(200, 200, 200)
Next j
Next i
Picture1.Line (-4, -3)-(10, -3), RGB(120, 120, 120)
Picture1.Line (3, 4)-(3, -10), RGB(120, 120, 120)
Picture1.CurrentX = 9.5: Picture1.CurrentY = -2.5: Picture1.Print "X"
Picture1.CurrentX = 3.2: Picture1.CurrentY = 3.5: Picture1.Print "Y"
Picture1.CurrentX = -4: Picture1.CurrentY = -3: Picture1.Print "Весна"
Picture1.CurrentX = 2.5: Picture1.CurrentY = -9.5: Picture1.Print "Лето"
Picture1.CurrentX = 8.5: Picture1.CurrentY = -3: Picture1.Print "Осень"
Picture1.CurrentX = 2.5: Picture1.CurrentY = 4: Picture1.Print "Зима"

Picture1.Line (-5, 5)-(10, 5), RGB(120, 120, 120)
Picture1.Line (-5, 0)-(-5, 10), RGB(120, 120, 120)
Picture1.CurrentX = 9.5: Picture1.CurrentY = 5.5: Picture1.Print "R"
Picture1.CurrentX = -4.8: Picture1.CurrentY = 10: Picture1.Print "Z"
End Sub

Private Sub Command6_Click() '                 Сохранить картинку в файл
On Error GoTo 90
SavePicture Picture1.Image, "Maikelson_1_" & Text21.Text & ".bmp"
GoTo 100
90: MsgBox "Ошибка записи в файл", , "Maikelson": Exit Sub
100: End Sub

Private Sub Command9_Click() '               интерференция
Timer1.Enabled = False
Form3.Show
End Sub

Private Sub Command1_Click() '               вычислительный эксперимент
Timer1.Enabled = False
For i = 0 To 77
X(i) = 0: Y(i) = 0 '     это чтобы эти координаты планет не выводились на рисунок формы 4 как координаты элементов установки
Next i
Form4.Show '                                   при ее загрузке в масштабе рисунка 0,1 м/см
End Sub

Private Sub Command18_Click() '             просмотр фото и видео файлов (форматы .bmp .jpg  .avi  .wmv)
Timer1.Enabled = False
Form6.Show '
End Sub

Private Sub Command16_Click() 'закрыть программу
Unload Me
Unload Form2
Unload Form3
Unload Form4
'Unload Form5
Unload Form6
Unload Form9
End Sub


