REM " Programmbeschreibung: Berechnung von Mond- und Sonnenfinsternissen " REM " Programmierer: Schlatter Christian, Prilly " REM " Dateiname: Sonnenfinsternis.BAS " REM " Version: 1.0 " REM " Änderungsdatum: 27.12.98 " REM " ****************************************************************** " REM " Einlesen des Suchjahres " INPUT " In welchem Jahr sollen Finsternisse gesucht werden "; AN REM " Initialisierung " JO = 1 B = -360 C = -360 PI = 3.1415926535# J = JO - 1 REM " Julianische Jahrhunderte und Jahrtausende ausgehend vom Jahr 2000 " AB = AN / 4 - INT(AN / 4) IF AB = 0 THEN AB = 1 SJ = ((AN - 2000) * 365.25 + .5 + J - AB) / 36525 MJ = SJ / 10 REM " Berechnung der Mittelwerte " LMS = 4.895062967# + 6283.319663# * MJ + 5.300181# * MJ * MJ KAS = -.003740816# - .004793106# * MJ + .000281128# * MJ * MJ HAS = .016284477# - .001532379# * MJ - .000720171# * MJ * MJ LPS = ATN(HAS / KAS) ES = ABS(HAS / SIN(LPS)) AMS = LMS - LPS AES = AMS FOR I = 1 TO 5 AES = AMS + ES * SIN(AES) NEXT I AVS = 2 * ATN(SQR((1 + ES) / (1 - ES)) * TAN(AES / 2)) ARS = LPS + AVS LCS = ARS IF LCS < 0 THEN LCS = LCS + 2 * PI LCS = 2 * PI * (LCS / 2 / PI - INT(LCS / 2 / PI)) P = 5.19846674# + 7771.377144# * SJ - .000028509468# * SJ * SJ Q = 1.627905233# + 8433.466157000001# * SJ - .000059453671# * SJ * SJ AML = 2.355555898# + 8328.691424000001# * SJ + .00015696909# * SJ * SJ LML = 3.810344426# + 8399.709112# * SJ - .000023209485# * SJ * SJ N = LML - Q LCL = LML + .10975981# * SIN(AML) + .003728314# * SIN(2 * AML) LCL = LCL + .0001751147# * SIN(3 * AML) + .0114895994# * SIN(2 * P) LCL = LCL - .0032390886# * SIN(AMS) - .00060674432# * SIN(P) LCL = LCL + .02223564# * SIN(2 * P - AML) - .0019955415# * SIN(2 * Q) LCL = LCL + .0010261566# * SIN(2 * P - 2 * AML) + .00099852225# * SIN(2 * P - AML - AMS) LCL = LCL + .00093059986# * SIN(2 * P + AML) + .00080066979# * SIN(2 * P - AMS) LCL = LCL + .00071602132# * SIN(AML - AMS) - .00053169516# * SIN(AML + AMS) LCL = LCL + .0002674717# * SIN(2 * P - 2 * Q) - .00021865097# * SIN(2 * Q + AML) LCL = LCL - .000191664684# * SIN(2 * Q - AML) + .00018631389# * SIN(4 * P - AML) LCL = LCL + .00014917716# * SIN(4 * P - 2 * AML) - .00013802645# * SIN(2 * P - AML + AMS) LCL = LCL - .0001183915# * SIN(2 * P + AML) - .000090223826# * SIN(P - AML) LCL = LCL + 8.736342500000001D-05 * SIN(P + AML) + 7.068583400000001D-05 * SIN(2 * P + AML - AMS) LCL = LCL + 6.976468799999999D-05 * SIN(2 * P + 2 * AML) + .000067389101# * SIN(4 * P) LCL = LCL + .00006394692# * SIN(2 * P - 3 * AML) LCL = 2 * PI * (LCL / 2 / PI - INT(LCL / 2 / PI)) IF LCL < 0 THEN LCL = LCL + 2 * PI N = 2 * PI * (N / 2 / PI - INT(N / 2 / PI)) REM " Berechnung von DL und DN für eine Sonnenfinsternis " DL = LCL - LCS + 2 * PI DL = 2 * PI * (DL / 2 / PI - INT(DL / 2 / PI)) DN = ABS(LCS - N) DN = 2 * PI * (DN / 2 / PI - INT(DN / 2 / PI)) REM " Überprüfung der Berechnungen " REM " Berechnung der Uhrzeit " IF ABS(DL * 180 / PI - B * 180 / PI) > 15 AND 180 / PI * DN < 11 THEN D = B * 180 / PI: H = 24 * (360 - D) / (DL * 180 / PI + 360 - D): PRINT "SONNENFINSTERNIS": PRINT " Jahrestag: "; JO - 1: TIME = INT(100 * H + .5) / 100: PRINT " Uhrzeit: "; INT(TIME); "h"; INT(INT((TIME - INT(TIME)) * 100) * 60 / 100) IF ABS(DL * 180 / PI - B * 180 / PI) > 15 AND ABS(180 / PI * DN - 180) < 11 THEN D = B * 180 / PI: H = 24 * (360 - D) / (DL * 180 / PI + 360 - D): PRINT "SONNENFINSTERNIS": PRINT " Jahrestag: "; JO - 1: TIME = INT(100 * H + .5) / 100: PRINT " Uhrzeit: "; INT(TIME); "h"; INT(INT((TIME - INT(TIME)) * 100) * 60 / 100) B = DL REM " Berechnung von DL und DN für eine Mondfinsternis " DL = LCL - LCS + 3 * PI DL = 2 * PI * (DL / 2 / PI - INT(DL / 2 / PI)) REM " Überprüfung der Berechnungen " REM " Berechnung der Uhrzeit " IF ABS(DL * 180 / PI - C * 180 / PI) > 15 AND 180 / PI * DN < 15 THEN D = C * 180 / PI: H = 24 * (360 - D) / (DL * 180 / PI + 360 - D): PRINT "MONDFINSTERNIS": PRINT " Jahrestag: "; JO - 1: TIME = INT(100 * H + .5) / 100: PRINT " Uhrzeit: "; INT(TIME); "h"; INT(INT((TIME - INT(TIME)) * 100) * 60 / 100) IF ABS(DL * 180 / PI - C * 180 / PI) > 15 AND ABS(180 / PI * DN - 180) < 15 THEN D = C * 180 / PI: H = 24 * (360 - D) / (DL * 180 / PI + 360 - D): PRINT "MONDFINSTERNIS": PRINT " Jahrestag: "; JO - 1: TIME = INT(100 * H + .5) / 100: PRINT " Uhrzeit: "; INT(TIME); "h"; INT(INT((TIME - INT(TIME)) * 100) * 60 / 100) REM " Reinitialisierung und Inkrementation " C = DL JO = JO + 1 REM " Neuer Berechnungszyklus oder Ende der Berechnung " IF JO > 365 THEN PRINT "Ende der Berechnung für das Jahr "; AN: STOP GOTO 90 End