Programme informatique GW Basic
de construction des cadrans solaires
bifilaires et à polos.
4è partie (4/4)
par Jean Pakhomoff
gnomoniste à Marseille
2960 GOSUB 1450:REM Azimuts lever et coucher
2970 PRINT #1,"Si horizontal à l'équateur HV et H sont en cm. à partir de la mér
idienne et parallèles à elle."
2980 GOSUB 1122:GOSUB 1125:REM affichage
2990 FOR I%=1 TO 48:REM de 1/4 en 1/4 d'heure
3000 GOSUB 1960:REM azimut
3010 GOSUB 2010:REM hauteur
3020 GOSUB 2090:REM x et y
3030 GOSUB 2040:REM lh tabulaire
3040 IF F<PI/2#-.00000000000001# THEN 3070
3050 HV=ATN(TAN(R)*AC/AB):IF HV<0 THEN HV=HV+PI
3060 HV=HV*180#/PI:GOTO 3150
3070 IF F>.000000000001# THEN GOTO 3100:REM si f n'est pas 0 aller à....
3080 HV=AC*TAN(R):H=AB*TAN(R):IF HV>999# THEN HV=.001#:H=.001#
3090 GOTO 3150
3100 IF HV=RRR THEN GOTO 3150:REM cas où Þ'=90°.
3110 HV=ATN(X/(Y+AB/TAN(F))):IF HV<0 THEN HV=HV+PI
3120 HV=HV*180#/PI:REM <=>tghv=tgh(Þ')=tgh(Þ)*AC/AB
3130 IF X>LAR THEN X=.001#
3140 IF ABS(Y)>LONG THEN Y=.001#
3150 PRINT #1, USING ZZZ$;RRR,H,AA,HT,X,Y,YO,HV
3160 RRR=RRR+3.75#:R=RRR*PI/180#
3170 IF R>ASDD THEN 3190
3180 NEXT I%
3190 IF ASDD=PI THEN PRINT #1,"Pour cette D le soleil est constamment sur l'hori
zon"
3200 RRR=RR:R=RO
3205 PRINT #1,"Coordonnées du midi solaire: X = 0 Y(A) =";AB/TAN(PI/2#-F+D);"
cm.":REM AZIMUT=0 HAUTEUR=90-f+D
3206 IF ASDD=PI THEN PRINT #1,"Coordonnées du minuit solaire: X = 0 Y(A) =";-A
B/TAN(-PI/2#+F+D);" cm.":REM Azimut =180°et hauteur=D+Þ-90
3208 INPUT "arrêt: appuyez sur a; autre déclinaison sur d: a ou d?",DC$
3209 IF DC$="d" THEN 2910
3210 GOTO 4670
3220 PRINT #1,"Bifilaire vertical déclinant ou méridional"
3230 IF F<PI/2#-.00000000000001# THEN IF F>.000000000001# THEN GOTO 3310:REM si
f<90°et si f n'est pas 0 aller à 3310
3240 PRINT #1,"Cas du pôle ou de l'équateur":PRINT"Cas du pôle ou de l'équateur"
:IF ELISABETHPAKHOMOFF$="p" THEN AB=LSTC:AC=AB:GOTO 3290
3250 INPUT "Choisissez AB et AC quelconques avec AB<AC: AB et AC ?",AB,AC
3260 IF AB>AC THEN PRINT"AB doit être < AC: recommencez":GOTO 3250
3270 PRINT #1,"AB =";AB;" cm. AC =";AC;" cm.":REM Au pôle les lignes horaires
sont parallèles à la ligne méridienne et situées à la distance x=AC*sint/cos(t+
ou-dg) de celle-ci selon le cas de figure.(T=H=t).
3280 REM A l'équateur elles partent du pied A du gnomon et répondent à la rela
tion tgHV=tgH*AC/AB ou encore tgHV=(AC/AB)*sinT/(cosÙg*tgh) où T est l'azimut et
h la hauteur.
3290 GOSUB 1590
3300 GOTO 3320
3310 PRINT #1,"Les lignes horaires tabulaires partent du point D éloigné de ";AB
*TAN(F);" cm. du point A pied du gnomon AB (vers le Zénith)"
3320 IF HH$="w" THEN AWM=PI/2#-K:AWS=PI/2#+K:GOTO 3340
3330 AWM=PI/2#+K:AWS=PI/2#-K:REM pour le calcul de la décl. magni.
3340 GOSUB 1220:REM décl.magni.
3350 PRINT #1,"Angle horaire de départ = ";RRR
3360 INPUT "DWLW, DELE = 1; DWLE,DELW = 2 : 1 ou 2 ?",NO
3370 IF NO=2 THEN PRINT #1,"DWLE (soir), DELW (matin)":GOTO 3390
3380 PRINT #1,"DWLW (matin), DELE (soir)"
3390 INPUT"Déclinaison choisie en ° ?",DD:D=DD*PI/180#:PRINT #1,"Déclinaison = "
;DD:
3400 INPUT "si nouvel angle horaire de départ appuyer sur Y sinon sur une autre
touche",DFG$
3410 IF DFG$="y" THEN INPUT "Nouvel angle horaire de départ en ° ?",RRR:R=RRR*PI
/180#:RR=RRR:RO=R
3420 GOTO 1650
3430 GOSUB 1130:REM asdd
3440 IF PDL$="Pas de lever pour cette déclinaison" THEN PDL$="NATHALIE PAKHOMOFF
":GOTO 3445
3441 GOTO 3450
3445 INPUT "arrêt: appuyez sur a; autre déclinaison sur d: a ou d?",DC$
3447 IF DC$ = "d" THEN 3390
3449 GOTO 4670
3450 GOSUB 1450:REM az levers et couchers
3460 IF PDC$="Pas de coucher pour cette déclinaison" THEN PDC$="SONIA PAKHOMOFF"
:GOTO 3510
3470 IF D-F<0 THEN GOTO 3510:REM Le cadran est éclairé tout ou partie de la jour
née.(l'angle entre zénith et équateur = f: si delta-f>0 <==> le soleil est derri
ère le premier vertical et
3475 REM selon la décl.et la décl. gnomo. plus de la moitié à la totalité du ca
dran ne pourra servir.) C'est le cas des zones intertropicales.
3480 IF NO=1 THEN PRINT"Cette moitié du cadran n'est pas éclairée pour cette f."
:GOTO 3485
3481 GOTO 3490
3485 INPUT "arrêt: appuyez sur a; autre déclinaison sur d: a ou d?",DC$
3487 IF DC$ = "d" THEN 3360
3489 GOTO 4670
3490 IF ALLE>=PI/2#+K THEN PRINT"Le soleil n'apparaît pas sur le cadran pour cet
te déclinaison.":GOTO 3505:REM Lorsque le soleil culmine au nord dans l'hémisphè
re nord les DELE ne peuvent pas être éclairés l'aprés-midi et les
3500 REM DWLW ne peuvent pas être éclairés le matin ce, quelle que soit la f et
la déclinaison. Les DELW et les DWLE peuvent être éclairés selon la déclinaison: si l'azim
ut devient < aw. Donc on compare aw à l'azimut des levers ou couchers.
3504 GOTO 3510
3505 INPUT "arrêt: appuyez sur a; autre déclinaison sur d: a ou d?",DC$
3507 IF DC$ = "d" THEN 3360
3509 GOTO 4670
3510 IF NO=2 THEN AW=PI/2#+K:K=-K:GOTO 3530
3520 AW=PI/2#-K
3530 GOSUB 1110:GOSUB 1100
3540 IF F>PI/2#-.00000000000001# THEN PRINT #1,"HV et H en cm. à partir de la mé
ridienne et paralléle à elle."
3550 FOR I%=1 TO 48
3560 GOSUB 1960:REM azimut
3570 IF D-F<=0 THEN GOTO 3630
3580 IF A<AW THEN GOTO 3680
3590 PRINT #1,"I% =";I%;" Angle horaire =";RRR
3600 RRR=RRR+3.75#:R=RRR*PI/180#
3610 IF A>AW THEN IF R<ASDD THEN GOTO 3880
3620 GOTO 3640:REM voir l'explication de cette condition à la ligne correspondan
te dans les inclinants.
3630 IF A<=AW THEN 3680
3640 AAA=AW
3650 GOSUB 680:REM horaz
3660 IF ASDD>PI-.00000000000001# THEN PRINT #1,"Pour cette déclinaison le soleil
est constamment sur l'horizon"
3670 I%=48:GOTO 3880
3680 GOSUB 2010:REM hauteur
3690 IF NO=2 THEN GOSUB 1880:GOTO 3710:REM LH dwle,delw:rem LH sur Þ
3700 GOSUB 1780:REM LH dwlw,dele:rem LH sur f
3710 GOSUB 2140:REM x et y
3720 IF F<PI/2#-.00000000000001# THEN 3750
3730 HV=X:H=XXX:IF X>LAR THEN HV=.001#:H=.001#
3740 GOTO 3800
3750 IF F>.000000000001# THEN GOTO 3780:REM si f n'est pas nul aller à 3780
3760 HV=ATN(AC*SIN(A)/(AB*COS(K)*TAN(BB))):IF HV<0 THEN HV=HV+PI
3770 HV=HV*180#/PI:GOTO 3800
3780 HV=ATN(X/(AB*TAN(F)+Y)):IF HV<0 THEN HV=HV+PI
3790 HV=HV*180#/PI:REM LH sur f' <=>tghv=tgh(f')=tgh(f)*AC/AB
3800 IF X>LAR THEN X=.001#:XXX=.001#
3810 IF Y>LONG THEN Y=.001#
3820 PRINT #1,USING ZZ$;RRR,H,AA,HT,X,Y,HV
3830 RRR=RRR+3.75#:R=RRR*PI/180#
3840 IF MOP=1 THEN I%=48:GOTO 3880
3850 IF R<ASDD THEN 3880
3860 IF ASDD=PI THEN PRINT #1,"Pour cette déclinaison le soleil est constamment
au dessus de l'horizon":GOTO 3890
3870 MOP=1:MAP=1:R=ASDD:RRR=FIX(ASDD*180000#/PI)/1000#:PRINT #1,"Coordonnées du
lever (LW) ou du coucher (LE)":GOTO 3560
3880 NEXT I%
3885 PRINT #1,"Coordonnées du midi solaire: X = 0 Y(A) =";AB*COS(K)*TAN(PI/2#
-F+D)/COS(K);" cm.":REM Azimut=0 et hauteur=90-f+déclinaison
3890 RRR=RR:R=RO:K=DG:MOP=0:MAP=0
3895 INPUT "arrêt: appuyez sur a; autre déclinaison sur d: a ou d?",DC$
3897 IF DC$ = "d" THEN 3360
3899 GOTO 4670
3900 PRINT #1,"Bifilaire vertical inclinant ou septentrional"
3910 IF F<PI/2#-1E-14 THEN IF F-.000000001#>0 THEN GOTO 3990:REM si f<90° et si
f n'est pas nul aller à 3990
3920 PRINT #1,"Cas du pôle ou de l'équateur":PRINT"Cas du pôle ou de l'équateur"
:IF ELISABETHPAKHOMOFF$="p" THEN AB=LSTC:AC=AB:GOTO 3970
3930 INPUT "Choisissez AB et AC quelconques avec AB<AC: AB et AC ?",AB,AC
3940 IF AB>AC THEN PRINT"AB doit être < AC: recommencez":GOTO 3930
3950 PRINT #1,"AB =";AB;" cm. AC =";AC;" cm.":REM Au pôle les lignes horaires
sont parallèles à la ligne méridienne et situées à la distance x=AC*sint/-cos(t
+ou-décl.gnomonique) de celle-ci selon le cas de figure.(T=H=t).
3960 REM A l'équateur elles partent du pied A du gnomon et répondent à la rela
tion tgHV=tgH*AC/AB ou encore tgHV=(AC/AB)*sinT/(cosdécl.gnomo.*tgh) où T est l'
azimut et h la hauteur.
3970 GOSUB 1590
3980 GOTO 4000
3990 PRINT #1,"Les lignes horaires tabulaires partent du point D éloigné de ";AB
*TAN(F);" cm. du point A pied du gnomon AB (vers le Nadir)"
4000 IF HH$="w" THEN AWM=PI/2#+K:AWS=PI/2#-K:GOTO 4030
4000 IF HH$="w" THEN AWM=PI/2#+K:AWS=PI/2#-K:GOTO 4030
4010 AWM=PI/2#-K:AWS=PI/2#+K:REM pour le calcul de la décl. magni.
4020 GOSUB 1220:REM décl. magni.
4030 PRINT #1,"Angle horaire de départ = ";RRR
4040 INPUT "INWLW, INELE = 1; INWLE, INELW = 2 : 1 ou 2 ?",NO
4050 IF NO=2 THEN PRINT #1,"INWLE (soir), INELW (matin)":GOTO 4070
4060 PRINT #1,"INWLW (matin), INELE (soir)"
4070 INPUT "Déclinaison choisie en ° ?",DD:D=DD*PI/180#:LPRINT"Déclinaison = ";D
D;"°"
4080 INPUT "si nouvel angle horaire de départ appuyer sur Y sinon sur une autre
touche",DFG$
4090 IF DFG$="y" THEN INPUT "Nouvel angle horaire de départ en ° ?",RRR:R=RRR*PI
/180#:RR=RRR:RO=R
4100 GOTO 1650
4110 GOSUB 1130:REM asdd
4120 IF PDL$="Pas de lever pour cette déclinaison" THEN PDL$="NATHALIE PAKHOMOFF
":GOTO 4125
4122 GOTO 4130
4125 INPUT "arrêt: appuyez sur a; autre déclinaison sur d: a ou d?",DC$
4127 IF DC$ = "d" THEN 4070
4129 GOTO 4670
4130 GOSUB 1450:REM az levers et couchers
4140 IF PDC$="Pas de coucher pour cette déclinaison" THEN PDC$="SONIA PAKHOMOFF"
:GOTO 4190
4150 IF D-F>.00000000001# THEN GOTO 4190:REM dans ce cas le soleil apparaît touj
ours sur le cadran: soit toute la journée, soit une partie===> horaz.
4160 IF NO=1 THEN IF ALLE<=PI/2#+K THEN PRINT"Le soleil n'apparaît pas sur le ca
dran pour cette déclinaison.":GOTO 4165
4162 GOTO 4170
4165 INPUT "arrêt: appuyez sur a; autre déclinaison sur d: a ou d?",DC$
4167 IF DC$ = "d" THEN 4040
4169 GOTO 4670
4170 IF NO=1 THEN GOTO 4190
4180 IF ALLE<=PI/2#-K THEN PRINT"Le soleil n'apparaît pas sur le cadran pour cet
te déclinaison.":GOTO 4185
4182 GOTO 4190
4185 INPUT "arrêt: appuyez sur a; autre déclinaison sur d: a ou d?",DC$
4187 IF DC$ = "d" THEN 4040
4189 GOTO 4670
4190 IF NO=2 THEN AW=PI/2#-K:GOTO 4210
4200 AW=PI/2#+K:K=-K
4210 GOSUB 1110:GOSUB 1100
4220 IF F>PI/2#-.00000000001# THEN PRINT #1,"HV et H en cm. à partir de la mérid
ienne et parallèle à elle."
4230 PRINT"aw=";AW
4240 FOR I%=1 TO 48
4250 PRINT"rrr=";RRR
4260 GOSUB 1960:PRINT"az=";A:REM azimut
4270 IF D-F<=0 THEN GOTO 4320:REM Si déclinaison-Þ<0 le soleil culmine au sud da
ns l'hémisphère nord (cas général).
4280 IF ALLE>AW THEN GOTO 4410: REM Pas besoin d'horazcar levers et couchers se
font devant le cadran.
4290 IF A>AW THEN GOTO 4410:REM Dans ce cas le soleil culmine au nord et est tou
jours devant le cadran jusqu'à une certaine heure qui sera donnée par horaz lors
que a devient <aw. On continue le programme.
4300 AAA=AW:GOSUB 680:REM horaz. Ici l'azimut devient < à aw <=> le soleil passe
derrière le cadran intertropical orienté au nord dans l'hémisphère nord avec un
soleil culminant au nord (déclinaison-f>0).
4310 GOTO 4650
4320 IF A>AW THEN GOTO 4390
4330 PRINT #1,"i% = ";I%;" Angle horaire = ";RRR;" Az=";A*180#/PI
4340 RRR=RRR+3.75#:R=RRR*PI/180#
4350 IF A<AW THEN IF R<ASDD THEN GOTO 4640
4360 AAA=AW:GOSUB 680:I%=48:GOTO 4640
4370 REM Si r>asdd alors que le cadran répond à la condition d'ensoleillement (a
lle>aw) c'est que l'incrémentation est trop forte et le passage sur le cadran se
fait pendant cette incrémentation supplémentaire.
4380 REM On renvoie alors sur horaz. Ceci n'a pas à être envisagé pour les zones
sub-tropicales (déclinaison-f>0) car le cadran est ensoleillé depuis midi jusqu
'à ce que a<=aw ou à alle (r>asdd) ====>horaz ou coordonnées des levers ou couc
hers.
4390 IF MAP=1 THEN GOTO 4410
4400 MAP=1:AAA=AW:GOSUB 680:REM horaz
4410 GOSUB 2010:REM hauteur
4420 IF NO=2 THEN GOSUB 1830:GOTO 4440:REM LH inelw,inwle:rem LH sur f
4430 GOSUB 1930:REM LH inele,inwlw:rem LH sur f
4440 GOSUB 2140:REM x et y
4450 X=-X:Y=-Y:XXX=-XXX
4460 IF F<PI/2#-.00000000000001# THEN 4490
4470 HV=X:H=XXX:IF HV>LAR THEN HV=.001#:H=.001#
4480 GOTO 4570
4490 IF F>.000000000001# THEN GOTO 4540:REM <=> si f n'est pas 0 aller à 4540
4500 IF ABS(BB)<.000000001# THEN HV=90:GOTO 4570
4510 HV=ATN(AC*SIN(A)/(AB*COS(K)*TAN(BB))):IF HV<0 THEN HV=HV+PI
4520 H=180#-H:REM à l'équateur le programme principal donne le supplément de l'a
ngle H considéré dans la théorie du bifilaire. On le retranche donc de pi pour a
voir les H et HV de la théorie.
4530 HV=HV*180#/PI:GOTO 4570
4540 HV=ATN(-X/(Y-AB*TAN(F))):IF HV<0 THEN HV=HV+PI:REM c'est la formule du cas
n° 2 de la théorie (quand y>AB); Elle marche aussi quand y<AD ;y-AD est alors<0
4541 REM ce qui <=>-x/(<0)<=>atn(>0) et HV<90°. La formule du cas n° 1 aurait do
nné le même résultat en posant aussi si HV<0 then HV=HV+PI.
4550 REM LH sur Þ' <=> tgHV=tgh(f')=tgh(f)*AC/AB
4560 HV=HV*180#/PI
4570 IF X>LAR THEN X=.001#:XXX=.001#
4580 IF Y>LONG THEN Y=.001#
4590 PRINT #1,USING ZZ$;RRR,H,AA,HT,X,Y,HV
4600 RRR=RRR+3.75#:R=RRR*PI/180#
4610 IF MOP=1 THEN I%=48:GOTO 4640
4620 IF R<ASDD THEN 4640
4630 MOP=1:R=ASDD:RRR=FIX(ASDD*180000#/PI)/1000#:PRINT #1,"Coordonnées du lever
pour les LW ou du coucher pour les LE":GOTO 4260
4640 NEXT I%
4645 IF ASDD=PI THEN PRINT #1,"180° <==> coordonnées du minuit solaire"
4650 RRR=RR:R=RO:K=DG:MOP=0:MAP=0
4655 INPUT "arrêt: appuyez sur a; autre déclinaison sur d: a ou d?",DC$
4657 IF DC$ = "d" THEN 4040
4660 REM LES CALCULS ET LOGICIEL ONT ETE REALISES PAR JEAN PAKHOMOFF.
4670 CLOSE
4680 END