De zichtbaarheidsduur van sterren, planeten, planetoiden en kometen.
----------------------------------------------------------------------
Met het programma ZIDUUR is het mogelijk om voor elke ster, planeet,
planetoide of komeet een zichtbaarheidsduurdiagram te maken. Dit is een
diagram waarin te zien is wanneer en hoelang een bepaald hemelobject
zichtbaar is. Het diagram wordt getekend voor een bepaald jaar en
geografische breedte.
De invoer.
------------
Nadat het programma gestart is komen we in het menu. Hier kan er gekozen
worden uit zes mogelijkheden, waarvan de laatste het programma doet
beeindigen.
1. Een zichtbaarheidsduurdiagram voor een ster.
2. Een planeet.
3. Alle planeten.
4. Planetoiden en periodieke kometen.
5. Niet periodieke kometen.
Na een keuze gemaakt te hebben wordt er gevraagd voor welk jaar en
geografische breedte (zuidelijk halfrond negatief) er een diagram getekend
moet worden.
Dan wordt er gevraagd naar de diepte van de Zon onder de horizon en de
hoogte van het object boven de horizon. Dit zijn waarden die betrekking
hebben op de helderheid van het object. De eerste is het gevolg van de
verstrooiing van het zonlicht door de atmosfeer (=schemering). De sterren
worden niet direct zichtbaar als de Zon onder de horizon verdwijnt.
Gewoonlijk vullen we hier negen in. Dit is in het midden van de nautische
schemering. De tweede is het gevolg van de extinctie. Sterren worden niet
direct zichtbaar als zij boven de horizon verschijnen. Gewoonlijk vullen
we hier vijf in.
Er moet opgemerkt worden dat dit richtwaarden zijn. Zwakkere objecten
vereisen een meer donkere hemelachtergrond en verschijnen pas hoger boven
de horizon dan vijf graden. Het weer speelt ook een belangrijke rol.
Hebben we in het menu voor een ster gekozen, dan vraagt het programma naar
zijn coordinaten. Deze coordinaten moeten gelden voor het equinox J2000.0.
Het programma corrigeert zelf voor de precessie.
Is er gekozen voor een planeet, dan wordt er gevraagd welke planeet
(Mercurius t/m Neptunus). De posities van de planeten worden door het
programma zelf berekend. Het is dus niet nodig deze in te voeren.
Bij de keuze alle planeten wordt er in een diagram de zichtbaarheidsduur
van alle planeten getekend. De planeten worden voor de duidelijkheid in
verschillende kleuren weergegeven:
Mercurius - grijs Saturnus - geel
Venus - lichtblauw Uranus - groen
Mars - rood Neptunus - donkerblauw
Jupiter - wit
Bij planetoiden en periodieke kometen vraagt het programma naar de
baanelementen. Ook deze moeten weer gelden voor het equinox J2000.0. Ook
bij de niet periodieke kometen wordt er naar de baanelementen gevraagd
(J2000.0). Het programma berekend dan uit deze baanelementen de posities.
Het enige verschil tussen keuze vier (planetoiden en periodieke kometen)
en keuze vijf (de niet periodieke kometen) is dat er bij keuze vier
uitgegaan wordt van een elliptische baan en bij keuze vijf van een
parabolische baan.
Het diagram.
--------------
Op het scherm wordt een rooster getekend met als getekend met als hoogste
waarde de maximale duur van een nacht op de gekozen geografische breedte.
Dit is vijftien uren op 52 graden noord en een diepte van de Zon van 9
graden.
Vervolgens worden om de drie dagen de cordinaten van de Zon berekend, de
coordinaten van de gekozen planeet, planetoide of komeet, de duur van de
nacht en de zichtbaarheidsduur van het object.
Staat het gegeven object ten westen van de Zon, dus aan de ochtendhemel,
dan tekent het programma een onderbroken lijn. Staat het object en oosten
van de Zon, aan de avondhemel, dan wordt er een ononderbroken lijn getrokken.
De mogelijkheden.
-------------------
Uit het zichtbaarheidsduurdiagram zijn de volgende zaken af te lezen:
- Zichtbaarheidsduur van een hemellichaam op een bepaalde datum
- Periode/datum van maximale zichtbaarheid
- Periode/datum van onzichtbaarheid
- Datum van de heliakische opkomst
- Datum van de heliakische ondergang
- Of het object 's ochtends danwel 's avonds zichtbaar is
- Oppositiedatum van het object met de Zon
- Conjunctie met de Zon
- Lengte van de nacht
Verder kan er volop geexperimenteerd worden met het programma. Zo kan
bijvoorbeeld gekeken worden hoeveel uur Venus of Mercurius na/voor de Zon
ondergaat/opkomt, hoe het zichtbaarheidsduurdiagram enorm vereenvoudigt
naarmate de geografische breedte kleiner wordt, wanneer de hondsdagen
beginnen, in welk gedeelte van de nacht Saturnus zichtbaar is, hoe in de
herfst objecten snel zichtbaar worden in de ochtendschemering terwijl
objecten in de avondschemering juist langzaam verdwijnen, wanneer
planetoide Vesta in oppositie is en hoe Mars komende jaren steeds langer
zichtbaar wordt tot wel 22 maanden lang.
Vragen, opmerkingen en suggesties t.a.v. het programma kunt u richten naar:
J. v.d. Kassteele
Heereweg 1
4317 AJ Noordgouwe
----------------------------------------------------------------------------
LISTING
-------
CLS
DEFDBL A-Z
DEF FNI (X) = X - 360 * INT(X / 360)
PI = 4 * ATN(1)
DEF FNR (X) = X * PI / 180
DEF FND (X) = X * 180 / PI
DEF FNS (X) = ATN(X / SQR(1 - X ^ 2))
DEF FNC (X) = PI / 2 - FNS(X)
invoer:
PRINT " De zichtbaarheidsduur van sterren, planeten, planetoiden en kometen"
PRINT STRING$(69, 196)
PRINT "1. Sterren"
PRINT "2. Planeten"
PRINT "3. Alle planeten"
PRINT "4. Planetoiden en periodieke kometen"
PRINT "5. Niet periodieke kometen"
PRINT "6. Programma beeindigen"
keuze:
K$ = INPUT$(1)
IF INSTR("123456", K$) = 0 THEN GOTO keuze
IF K$ = "6" THEN CLS : END
INPUT "Welk jaar .......................... "; JR
T = (JR - 1999.5) / 100
J = JR: M = 1: D = 1
GOSUB juldag
JD0 = JD
HE = FNR(23.43929111# - (46.815 * T - .00059 * T ^ 2 + .001813 * T ^ 3) / 3600)
ECZ = .016708617# - 4.2037E-05 * T - 1.236E-07 * T ^ 2
INPUT "Welke geografische breedte (D,M) ... "; D, M
S = 1: IF D < 0 THEN S = -1: D = -D
GB = FNR(S * (D + M / 60))
INPUT "Diepte Zon onder de horizon (D) .... "; X: HZ0 = FNR(ABS(X))
INPUT "Hoogte object boven de horizon (D) . "; X: HS0 = FNR(ABS(X))
ND = (SIN(HZ0) - SIN(ABS(GB)) * SIN(HE)) / (COS(GB) * COS(HE))
IF ND < -1 THEN ND = 24 ELSE ND = INT(FND(FNC(ND)) / 7.5) + 1
ON VAL(K$) GOSUB sterren, planeten, scherm, plperkom, nperkom
GOTO scherm
sterren:
INPUT "Rechte klimming ster (H,M) ......... "; H, M
RK = FNR(15 * (H + M / 60))
INPUT "Declinatie ster (D,M) .............. "; D, M
S = 1: IF D < 0 THEN S = -1: D = -D
DL = FNR(S * (D + M / 60))
M = 3.07496 + .00186 * T: N = 1.33621 - .00057 * T
DA = (M + N * SIN(RK) * TAN(DL)) / 240
DD = (N * COS(RK)) / 240
RK = FND(RK) + DA * 100 * T
DL = DL + FNR(DD * 100 * T)
RETURN
planeten:
INPUT "Welke planeet (ME,VE,MA,JU,SA,UR,NE) "; P$
IF P$ = "" THEN GOTO planeten
IF INSTR("MEVEMAJUSAURNE", P$) = 0 THEN GOTO planeten
leesbaan:
IF P$ = "ME" THEN RESTORE mer: GOTO baan
IF P$ = "VE" THEN RESTORE ven: GOTO baan
IF P$ = "MA" THEN RESTORE mar: GOTO baan
IF P$ = "JU" THEN RESTORE jup: GOTO baan
IF P$ = "SA" THEN RESTORE sat: GOTO baan
IF P$ = "UR" THEN RESTORE ura: GOTO baan
IF P$ = "NE" THEN RESTORE nep: GOTO baan
baan:
FOR I% = 1 TO 5: READ A, B, C, D
E(I%) = A + T * (B + T * (C + T * D))
NEXT
HA = E(1): EC = E(2): IN = FNR(E(3)): LK = FNR(E(4)): AP = FNR(E(5) - E(4))
RETURN
plperkom:
INPUT "Epoche (D,M,J) ..................... "; D, M, J
GOSUB juldag
JDE = JD
nul1:
INPUT "Halve grote as (AE)................. "; HA
IF HA = 0 THEN GOTO nul1
DB = .9856076686# / (HA * SQR(HA))
INPUT "Exenticiteit ....................... "; EC
INPUT "Inclinatie (D) ..................... "; IN
INPUT "Lengte klimmende knoop (D) ......... "; LK
PRINT "[A]rgument of [L]engte perihelium .. ?"
A$ = INPUT$(1): PRINT CHR$(30);
IF A$ = "A" THEN INPUT "Argument van het perihelium (D) .... "; AP: GOTO verder1
INPUT "Lengte van het perihelium (D) ...... "; LP
AP = LP - LK
verder1:
PRINT "Middelbare [A]nomalie of [L]engte .. ?"
A$ = INPUT$(1): PRINT CHR$(30);
IF A$ = "A" THEN INPUT "Middelbare anomalie (D) ............ "; MA0: GOTO verder2
INPUT "Middelbare lengte (D) .............. "; ML
MA0 = ML - LK - AP
verder2:
IN = FNR(IN): LK = FNR(LK): AP = FNR(AP)
GOSUB precbaan
RETURN
nperkom:
INPUT "Tijdstip periheliumpassage (D,M,J) . "; D, M, J
GOSUB juldag
JDT = JD
nul2:
INPUT "Periheliumafstand (AE) ............. "; PA
IF PA = 0 THEN GOTO nul2
INPUT "Inclinatie (D) ..................... "; IN
INPUT "Lengte klimmende knoop (D) ......... "; LK
INPUT "Argument van het perihelium (D) .... "; AP
IN = FNR(IN): LK = FNR(LK): AP = FNR(AP)
GOSUB precbaan
RETURN
juldag:
IF M <= 2 THEN J = J - 1: M = M + 12
A = INT(J / 100): B = 2 - A + INT(A / 4)
JD = INT(365.25 * (J + 4716)) + INT(30.6001 * (M + 1)) + D + B - 1524.5
RETURN
precbaan:
IN0 = IN: LK0 = LK: AP0 = AP
P1 = FNR((47.0029 * T - .03302 * T ^ 2 + .00006 * T ^ 3) / 3600)
P2 = FNR((629554.9824# - 869.8089 * T + .03536 * T ^ 2) / 3600)
P3 = FNR((5029.0966# * T + 1.11113 * T ^ 2 - .000006 * T ^ 3) / 3600) + P2
A = SIN(IN0) * SIN(LK0 - P2)
B = -SIN(P1) * COS(IN0) + COS(P1) * SIN(IN0) * COS(LK0 - P2)
IN = FNS(SQR(A ^ 2 + B ^ 2))
IF IN0 > .5 * PI THEN IN = PI - IN
LK = P3 + ATN(A / B)
IF B < 0 THEN LK = LK + PI
A = -SIN(P1) * SIN(LK0 - P2)
B = SIN(IN0) * COS(P1) - COS(IN0) * SIN(P1) * COS(LK0 - P2)
AP = AP0 + ATN(A / B)
RETURN
scherm:
SCREEN 12
WINDOW (-11.5, -.7)-(366, ND + .3)
RESTORE dagnr
FOR I% = 1 TO 13: READ X
LINE (X, 0)-(X, ND), 8
NEXT
FOR I% = 0 TO ND
LINE (1, I%)-(366, I%), 8
NEXT
LOCATE 30, 5
PRINT "JAN FEB MRT APR MEI JUN JUL AUG SEP OKT NOV DEC";
RESTORE uren
FOR I% = 0 TO ND: READ U$
PSET (-11.5, I% + .15), 0: DRAW "C15S20": DRAW U$
PSET (-11, I% + .15), 0: DRAW "C15S20": DRAW U$
NEXT
JD = JD0 + 1: KL = 15: NDT = 1
IF K$ <> "3" THEN GOTO hoofdprog
alleplan:
P$ = "ME": KL = 7: GOSUB leesbaan: GOSUB hoofdprog: NDT = 0
P$ = "VE": KL = 11: GOSUB leesbaan: GOSUB hoofdprog
P$ = "MA": KL = 12: GOSUB leesbaan: GOSUB hoofdprog
P$ = "JU": KL = 15: GOSUB leesbaan: GOSUB hoofdprog
P$ = "SA": KL = 14: GOSUB leesbaan: GOSUB hoofdprog
P$ = "UR": KL = 10: GOSUB leesbaan: GOSUB hoofdprog
P$ = "NE": KL = 9: GOSUB leesbaan: GOSUB hoofdprog
A$ = INPUT$(1): SCREEN 0: GOTO invoer
hoofdprog:
T = (JD - 2451545) / 36525
MLZ = 280.46645# + 36000.76983# * T + .0003032# * T ^ 2
MAZ = 357.5291 + 35999.0503# * T - .0001559# * T ^ 2 - 4.8E-07 * T ^ 3
MLZ = FNR(FNI(MLZ))
MAZ = FNR(FNI(MAZ))
C = (1.9146 - .004817 * T - .000014 * T ^ 2) * SIN(MAZ)
C = FNR(C + (.019993 - .000101 * T) * SIN(2 * MAZ) + .00029 * SIN(3 * MAZ))
HLZ = MLZ + C
WAZ = MAZ + C
RVZ = (1.000001018# * (1 - ECZ ^ 2)) / (1 + ECZ * COS(WAZ))
RKZ = FND(ATN(COS(HE) * TAN(HLZ)))
IF COS(HLZ) < 0 THEN RKZ = RKZ + 180
DLZ = FNS(SIN(HE) * SIN(HLZ))
ON VAL(K$) GOTO oponder, planetenp, planetenp, plperkomp, nperkomp
planetenp:
IF P$ = "ME" THEN RESTORE lmer
IF P$ = "VE" THEN RESTORE lven
IF P$ = "MA" THEN RESTORE lmar
IF P$ = "JU" THEN RESTORE ljup
IF P$ = "SA" THEN RESTORE lsat
IF P$ = "UR" THEN RESTORE lura
IF P$ = "NE" THEN RESTORE lnep
READ A, B, C, D
ML = A + T * (B + T * (C + T * D))
MA = FNR(FNI(ML - E(5)))
EA0 = MA
GOTO anomalie
plperkomp:
MA = FNR(MA0 + (JD - JDE) * DB)
EA0 = MA
GOTO anomalie
nperkomp:
W = (.03649116245# * (JD - JDT)) / (2 * PA * SQR(PA))
Y = (W + SQR(W ^ 2 + 1)) ^ (1 / 3)
S = Y - 1 / Y
WA = 2 * ATN(S):
RV = PA * (1 + S ^ 2)
GOTO positie
anomalie:
EA = MA + EC * SIN(EA0)
IF ABS(EA - EA0) > .0000001 THEN EA0 = EA: GOTO anomalie
WA = 2 * ATN(SQR((1 + EC) / (1 - EC)) * TAN(EA / 2))
RV = HA * (1 - EC * COS(EA))
positie:
U = WA + AP
HL = LK + ATN(COS(IN) * TAN(U))
IF COS(U) < 0 THEN HL = HL + PI
HB = FNS(SIN(U) * SIN(IN))
X = RV * COS(HB) * COS(HL) + RVZ * COS(HLZ)
Y = RV * COS(HB) * SIN(HL) + RVZ * SIN(HLZ)
Z = RV * SIN(HB)
EL = ATN(Y / X)
IF X < 0 THEN EL = EL + PI
EB = ATN(Z / SQR(X ^ 2 + Y ^ 2))
RK = FND(ATN((SIN(EL) * COS(HE) - TAN(EB) * SIN(HE)) / COS(EL)))
IF COS(EL) < 0 THEN RK = RK + 180
DL = FNS(SIN(EB) * COS(HE) + COS(EB) * SIN(HE) * SIN(EL))
oponder:
S = FNI(280.46061837# + 360.98564736629# * (JD - 2451545!) + 3.87933E-04 * T ^ 2)
H0 = -HZ0: A = FNI(RKZ): D = DLZ: ZZ = 1
GOSUB ziduur
ZZ = 0: Z1 = MS: Z2 = MR: ND = Z2 - Z1
H0 = HS0: A = FNI(RK): D = DL: SS = 1
GOSUB ziduur
SS = 0: S1 = MR: S2 = MS
GOTO ziduur1
ziduur:
H = (SIN(H0) - SIN(GB) * SIN(D)) / (COS(GB) * COS(D))
IF H > 1 AND ZZ = 1 THEN ZD = 24: ND = 24: RETURN teken
IF H < -1 AND ZZ = 1 THEN ZD = 0: ND = 0: RETURN teken
IF H > 1 AND SS = 1 THEN ZD = 0: RETURN teken
IF H < -1 AND SS = 1 THEN ZD = Z2 - Z1: RETURN teken
H = FND(FNC(H))
MT = (A - S) / 360
MR = MT - H / 360
MS = MT + H / 360
MR = 24 * (MR - INT(MR))
MS = 24 * (MS - INT(MS))
IF MR < 12 THEN MR = MR + 24
IF MS < 12 THEN MS = MS + 24
RETURN
ziduur1:
IF S2 < Z2 THEN MIN = S2 ELSE MIN = Z2
IF S1 > Z1 THEN MAX = S1 ELSE MAX = Z1
IF S1 > S2 THEN GOTO ziduur2 ELSE ZD = MIN - MAX: IF ZD < 0 THEN ZD = 0
GOTO teken
ziduur2:
ZD1 = MIN - Z1: IF ZD1 < 0 THEN ZD1 = 0
ZD2 = Z2 - MAX: IF ZD2 < 0 THEN ZD2 = 0
ZD = ZD1 + ZD2
teken:
IF FNI(RK - RKZ) < 180 THEN ST = &HFFFF ELSE ST = &H3333
X = JD - JD0
IF X = 1 AND NDT = 1 THEN PSET (X, ND), 7
IF X > 1 AND NDT = 1 THEN LINE (X - 3, ND0)-(X, ND), 7
IF X = 1 THEN PSET (X, ZD), KL ELSE LINE (X - 3, ZD0)-(X, ZD), KL, , ST
JD = JD + 3
IF JD < JD0 + 368 THEN ZD0 = ZD: ND0 = ND: GOTO hoofdprog
IF K$ <> "3" THEN A$ = INPUT$(1): SCREEN 0: GOTO invoer
JD = JD0 + 1
RETURN
mer:
DATA 0.387098310,0,0,0
DATA 0.20563175,0.000020406,-2.84E-8,-1.7E-10
DATA 7.004986,0.0018215,-1.809E-5,5.3E-8
DATA 48.330893,1.1861890,0.00017587,2.11E-7
DATA 77.456119,1.5564775,0.00029589,5.6E-8
ven:
DATA 0.723329820,0,0,0
DATA 0.00677188,-0.000047766,9.75E-8,4.4E-10
DATA 3.394662,0.0010037,-8.8E-7,-7E-9
DATA 76.679920,0.9011190,0.00040665,-8E-8
DATA 131.563707,1.4022188,-0.00107337,-5.315E-6
mar:
DATA 1.523679342,0,0,0
DATA 0.09340062,0.000090483,-8.06E-8,-3.5E-10
DATA 1.849726,-0.0006010,1.276E-5,-6E-9
DATA 49.558093,0.7720923,1.605E-5,2.325E-6
DATA 336.060234,1.8410331,0.00013515,3.18E-7
jup:
DATA 5.202603191,1.913E-7,0,0
DATA 0.04849485,0.000163244,-4.719E-7,-1.97E-9
DATA 1.303270,-0.0054966,4.65E-6,-4E-9
DATA 100.464441,1.0209550,0.00040117,5.69E-7
DATA 14.331309,1.6126668,0.00103127,-4.569E-6
sat:
DATA 9.554909596,-2.1389E-6,0,0
DATA 0.05550862,-0.000346818,-6.456E-7,3.38E-9
DATA 2.488878,-0.0037363,-0.00001516,8.9E-8
DATA 113.665524,0.8770979,-0.00012067,-2.380E-6
DATA 93.056787,1.9637694,0.00083757,4.899E-6
ura:
DATA 19.218446062,-3.72E-8,9.8E-10,0
DATA 0.04629590,-0.000027337,7.90E-8,2.5E-10
DATA 0.773196,0.0007744,0.00003749,-9.2E-8
DATA 74.005947,0.5211258,0.00133982,0.000018516
DATA 173.005159,1.4863784,0.00021450,4.33E-7
nep:
DATA 30.110386869,-1.663E-7,6.9E-10,0
DATA 0.00898809,6.408E-6,-8E-10,-5E-11
DATA 1.769952,-0.0093082,-7.08E-6,2.8E-8
DATA 131.784057,1.1022057,0.00026006,-6.36E-7
DATA 48.123691,1.4262677,0.00037918,-3E-9
' L
lmer: DATA 252.250906,149474.0722491,0.00030397,1.8E-8
lven: DATA 181.979801,58519.2130302,0.00031060,1.5E-8
lmar: DATA 355.433275,19141.6964746,0.00031097,1.5E-8
ljup: DATA 34.351484,3036.3027889,0.00022374,2.5E-8
lsat: DATA 50.077471,1223.5110141,0.00051952,-3E-9
lura: DATA 314.055005,429.8640561,0.00030434,2.6E-8
lnep: DATA 304.348665,219.8833092,0.00030926,1.8E-8
dagnr:
DATA 1,32,60,91,121,152,182,213,244,274,305,335,366
uren:
DATA "BR2RD2LU2","BR3D2","BR2RDLDR","BR2RDNLDL","BR2DRNUD","BR2NRDRDL"
DATA "BR2NRD2RUL","BR2RD2","BR2RDNLDLU2","BR2BD2RU2LDR","BRD2BRRU2LD2"
DATA "BRD2BR2U2","BRD2BRNRURUL","BRD2BRRUNLUL","BRD2BR2UNULU"
DATA "BRD2BRRULUR","BRD2BRNURULUR","BRD2BR2U2L","BRD2BRUNRURD2L"
DATA "BRD2BRRU2LDR","RDLDRBRRU2LD2","RDLDRBR2U2","RDLDRBRNRURUL"
DATA "RDLDRBRRUNLUL","RDLDRBR2UNULU"