Auf diesen Seiten war ich bereits dank Google. Ich bin zu folgendem Resultat gekommen:
'Quelle:
http://www.geoastro.de/SME/tk/index.htm 'Quelle:
https://de.sci.astronomie.narkive.com/EXoOeuaU/sonnenposition-berechnen-und-werte-parallel-ausgeben Private Sub FormelAnwenden()
Dim w As Integer = 1 'unbekannte Varable und Typ
deklin = -23.45 * Math.Cos(K * 360 * (Tageszahl + 10) / 365)
zeitgleichung = 60 * (-0.171 * Math.Sin(0.0337 * Tageszahl + 0.465) - 0.1299 * Math.Sin(0.01787 * Tageszahl - 0.168))
stundenwinkel = 15 * (Now.ToString("HH") + Now.ToString("MM") / 60 - (15.0 - Laengengrad) / 15.0 - 12 + zeitgleichung / 60)
x = Math.Sin(K * Breitengrad) * Math.Sin(K * deklin) + Math.Cos(K * Breitengrad) * Math.Cos(K * deklin) * Math.Cos(K * stundenwinkel) 'Höhe
y = -(Math.Sin(K * Breitengrad) * Math.Sin(K * w) - Math.Sin(K * deklin)) / (Math.Cos(K * Breitengrad) * Math.Sin(Math.Acos(Math.Sin(K * w))))
lblhoehe.Text = Math.Asin(x) / K
lblazimut.Text = Math.Acos(y) / K
End Sub
Private Sub CalcJD()
Dim y, m, d As Integer, h As Double
If Now.ToString("MM") > 2 Then
y = Now.ToString("yyyy")
m = Now.ToString("MM")
Else
y = Now.ToString("yyyy") - 1
m = Now.ToString("MM") + 12
End If
d = Now.ToString("d")
h = Now.ToString("HH") / 24 + Now.ToString("mm") / 1440 + Now.ToString("ss") / 86400
Dim a As Integer = y \ 100
Dim b As Integer = 2 - a + a \ 4
Dim JD As Double = Int(365.25 * (y + 4716)) + Int(30.6001 * (m + 1)) + d + h + b - 1524.5
lblJD.Text = JD.ToString("#,0.0000000")
Tageszahl = JD.ToString("#,0.0000000")
Rest(JD)
FormelAnwenden()
End Sub
Private Sub Rest(ByVal JD As Double)
Dim n As Double = JD - 2451545
Dim L As Double = 280.46 + 0.9856474 * n
L = L - Int(L / 360) * 360
Dim g As Double = 357.528 + 0.9856003 * n
g = g - Int(g / 360) * 360
Dim g_ As Double = g * Math.PI / 180
Dim A As Double = L + 1.915 * Math.Sin(g_) + 0.02 * Math.Sin(2 * g_)
Dim A_ As Double = A * Math.PI / 180
Dim E As Double = 23.439 - 0.0000004 * n
Dim E_ As Double = E * Math.PI / 180
Dim Rekt_ As Double = Math.Atan(Math.Cos(E_) * Math.Sin(A_) / Math.Cos(A_))
Dim Rekt As Double = Rekt_ * 180 / Math.PI
If Math.Cos(A_) < 0 Then Rekt += 180
Dim Dekl_ As Double = Math.Asin(Math.Sin(E_) * Math.Sin(A_))
Dim Dekl As Double = Dekl_ * 180 / Math.PI
lblRekt.Text = Rekt.ToString("0.0000°")
lblDekl.Text = Dekl.ToString("0.0000°")
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles cmdBerechnen.Click
lblZeitstempel.Text = Now.ToString
CalcJD()
End Sub
wenn du mir bitte den Fehler in meinem Code aufzeigen könntest wäre ich dir sehr verbunden.