Programme basic pour la construction point par point des bifilaires horizontaux et verticaux
dont les fils sont horizontaux et verticaux
avec libre choix de
la position des fils par rapport au plan du cadran.
5 REM
bfp825= bfp824 avec position de AB', AC', BB', CC'
10 REM
bfp824= bfp822 avec correction des HV angles tabulaires
29 10 2024
20 REM bfp821=bfp820 avec adaptation
sur la position des fils. le fil passant par B étant le plus proche du plan ou
du mur. 8 10 2024
30 OPEN"BFP824.doc" FOR OUTPUT AS #1
40 PRINT "Le point B est le plus
proche du plan du cadran. Le fil horizontal comme le fil vertical pourront
passer par B."
50 REM Ce programme tient compte des
déclinaisons quelconques extra-solaires. Pratique pour tracer les heures
babyloniques et italiques avec des jours entiers d'heures
60 REM
(intersection de celles-ci sur la méridienne). Par exemple jour de 24
heures pour la 12è heure babylonique ou italique etc..etc..
70 CLS:DEFDBL A-Z:PI=4#*ATN(1#)
80 PRINT"Les paramètres entrés doivent
être compatibles avec le programme BFP. Pour les cadrans classiques à polos
choisir L longueur du style. HV est alors l'angle tabulaire du cadran à polos et
X,Y ses coordonnées."
90 PRINT
95 INPUT "Orientation Est appuyez sur
e, Ouest sur w , horizontal sur h :votre choix ?",O$:IF O$="e" THEN
O$="EST":PRINT:GOTO 640
100 IF O$="w" THEN O$="OUEST" :PRINT:GOTO 640
110 GOTO 640: REM o$=h
120 REM HV des horizontaux
122 if b$="c" then 142
130 HV=ATN(X/(Y*AB/TAN(F))):IF HV<0 THEN HV=HV+PI
142 HV=ATN(X/(Y*AC/TAN(F))):IF HV<0 THEN HV=HV+PI
144 HV=HV*180#/PI:return
150 RETURN
160 REM HV des déclinants
162 if b$="c" then 182
170 HV=ATN(X/(Y+AB*TAN(F))):IF HV<0 THEN HV=HV+PI
180 HV=HV*180#/PI:return
182 HV=ATN(X/(Y+AC*TAN(F))):IF HV<0 THEN HV=HV+PI
184 HV=HV*180#/PI
190 RETURN
200 REM HV des inclinants y>AD (HV>pi/2)
202
if b$="c" then 212
210 HV=ATN(-X/(Y-AB*TAN(F)))+PI:HV=HV*180#/PI:RETURN
212 HV=ATN(-X/(Y-AC*TAN(F)))+PI:HV=HV*180#/PI:RETURN
220 REM HV des inclinants y<AD (HV<pi/2)
222 if b$="c" then 232
230 HV=ATN(X/(AB*TAN(F)-Y)):HV=HV*180#/PI:RETURN
232 HV=ATN(X/(AC*TAN(F)-Y)):HV=HV*180#/PI:RETURN
240 REM configuration affichage.
250 ZZ$="###.### ###.###
###.### ####.###
####.### ###.###":RETURN
260 PRINT #1, TAB(2);" A hor";TAB(11);"
AZ";TAB(20);" Ht
";TAB(30);" X cm.";T
AB(39);" Y(A) cm. ";TAB(51);"
HV "
270 RETURN
272 PRINT TAB(2);" A hor";TAB(11);"
AZ";TAB(20);" Ht
";TAB(30);" X cm.";T
AB(39);"
Y(A) cm. ";TAB(51);" HV "
275 RETURN
280 REM Azimut
290 A=ATN(SIN(R)/(COS(R)*SIN(F)-TAN(D)*COS(F))):IF A<0 THEN A=A+PI
300 IF Q$="v" THEN 380:REM cas
particulier des horizontaux ci-dessous.
310 IF R<>0 THEN 330
320 IF PI/2#-F+D>PI/2# THEN A=PI:GOTO 380
330 IF R<>PI THEN 380
340 IF PI/2#-F+D>PI/2# THEN IF D<>PI/2#-F THEN A=PI:GOTO 380
350 PRINT #1,"X et Y ne peuvent être
déterminés: l'astre tangente l'horizon (hauteur nulle).":GOTO 860
360 REM
Quand pi/2-f+d>90 l'astre passe au-delà du zénith vers le nord dans
l'hémisphère nord (vers le sud dans l'h. sud) et donc quand r=0 ou 180°
l'azimut=180°.
370 REM Quand d=pi/2-f l'astre
tangente l'horizon quand r=180°. x et y ne peuvent alors être déterminés car les
rayons ne coupent plus l'horizon (hauteur=0).
380 AA=A*180#/PI:RETURN
390 REM Hauteur
400BB=COS(D)*COS(R)*COS(F)+SIN(D)*SIN(F):BB=ATN(BB/SQR(1#-BB^2#))
410 HT=BB*180#/PI:RETURN
420 REM X et Y horizontaux
430 IF B$="c" THEN 470:REM
b a été entré pour les polaires H et V
440 X=AC*SIN(A)/TAN(BB):IF
X<-3.258E-07 THEN X=0:REM sin 0 est donné par -3.2584
14e-07 ce qui fausse la valeur de hv
quand r=0 et que l'azimut est de 180° (astre au-delà du zénith).
450 Y=AB*COS(A)/TAN(BB)
460 RETURN
470 X=AB*SIN(A)/TAN(BB):IF X<-3.258E-07 THEN X=0:REM voir ligne 440
480 Y=AC*COS(A)/TAN(BB)
490 RETURN
500 REM X et Y verticaux déclinants et
inclinants
510 FIL=COS(A+K):IF G$="i" THEN FIL=-FIL
520 IF B$="c" THEN 580
530 REM
le fil horizontal passe par B
540 X=AC*SIN(A)/FIL
550 Y=AB*COS(K)*TAN(BB)/FIL
560 RETURN
570 REM
le fil vertical passe par B
580 X=AB*SIN(A)/FIL
590 Y=AC*COS(K)*TAN(BB)/FIL
600 RETURN
610 INPUT "Déclinaison du soleil en °
?",DD:D=DD*PI/180#:PRINT
620 PRINT #1,"Déclinaison du soleil
=";DD;"°":PRINT #1,:RETURN
630 INPUT "Angle horaire choisi en °
?",RR:R=RR*PI/180#:PRINT:RETURN
640 INPUT "Votre latitude en °
?",FF:F=FF*PI/180#:PRINT #1,"Latitude =";FF;"°":P
RINT #1,:PRINT
650 INPUT "Cadran bifilaire = b; à
polos = p : b ou p ?",Q$:IF Q$="b" THEN 710
660 IF O$<>"h" THEN 690
665 rem
cadrans polaires horizontaux
670 INPUT "Longueur du style en cm.
?", L:AB=L*SIN(F):AC=AB
680 PRINT #1,"L =";L;" cm.";" AB = AC
= ";AB;" cm.":GOTO 750:REM AD=AB/TG(F)
685 rem
cadrans polaires verticaux
690 INPUT "Longueur du style en cm.
?",L:AB=L*COS(F):AC=AB
700 PRINT
#1,"L = ";L;" cm.";" AB = AC =
";AB;" cm.":GOTO 740
705 rem cadrans bifilaires
710 INPUT "Valeur de AB et AC en cm.:
AB,AC ?",AB,AC:PRINT #1,"AB =";AB;"cm.";"AC =";AC;"cm.":PRINT:PRINT #1,
720 PRINT"Si le fil horizontal (1er
vertical) passe par B appuyer sur b; sinon appuyer sur c; votre choix ?"
730 INPUT"b ou c?",B$
740 AD=AB*TAN(F):AZ=AC*TAN(F)
750 INPUT "Première déclinaison
choisie ? ",DD:D=DD*PI/180#:PRINT
760 PRINT #1,"Première déclinaison
choisie =";DD;"°":PRINT #1,
770 PRINT "Première déclinaison
choisie =";DD;"°":PRINT
780 GOSUB 250
790 PRINT "Type du cadran: Horizontal
appuyez sur h":PRINT
800 PRINT"Vertical appuyez sur
v":PRINT
810 INPUT "Votre choix ?",Q$
820 IF Q$="v" THEN GOTO 940
825 rem bifilaire horizontal
830 PRINT #1,"Cadran horizontal":PRINT
#1,
840 INPUT"Si même déclinaison appuyer
sur y; si changement appuyer sur une autre
lettre",DD$
850 IF DD$= "y" THEN 870:REM
(ces deux lignes sont introduites le 7 1 2011)
860 GOSUB 610
870 GOSUB 630
880 GOSUB 290:GOSUB 400:GOSUB
430:GOSUB 122
890 GOSUB 260
900 PRINT #1, USING ZZ$;RR,AA,HT,X,Y,HV
910 PRINT #1,:PRINT #1,
912 PRINT
USING ZZ$;RR,AA,HT,X,Y,HV
915
PRINT :PRINT
920 INPUT "Autre point appuyez sur p:
arrêt sur a : p ou a ?",PT$:IF
PT$="p" T
HEN 840
930 GOTO 1260
935 rem
bifilaire vertical
940 INPUT "Déclinant appuyez sur d,
inclinant sur i: d ou i ?",G$
950 INPUT "Déclinaison gnomonique en °
?",KK:K=KK*PI/180#:MK=-K:PRINT:MKK=K
960 PRINT #1,"Déclinaison gnomonique
=";KK;"°";" ";O$:PRINT #1,
962 BB1=AB*COS (k):CC1=AC*COS (K):AB1=AB*SIN (K):AC1=AC*SIN (K)
964
print "DISTANCE
DE B
AU MUR = BB' = ";BB1;"
AB'
= ";AB1
965 print "DISTANCE DE C AU MUR = CC' = ";CC1;"
AC' = ";AC1
966 print #1,"DISTANCE DE B AU MUR
= BB' = ";BB1;" AB' = ";AB1
967 print #1,"DISTANCE DE C AU MUR = CC' = ";CC1;"
AC' = ";AC1
968 print #1,"AD = ";AD;" AZ =
";AZ:
print "AD = ";AD;" AZ = ";AZ
970 IF G$="i" THEN GOTO 1110
980 INPUT "DWLW , DELE = 1 ; DELW ,
DWLE = 2 : votre choix ?",CH
990 IF CH=2 THEN K=MK:PRINT #1,"DELW , DWLE":PRINT #1,:GOTO 1010
1000 PRINT #1,"DELE , DWLW":PRINT #1,
1010 INPUT "Si même déclinaison:
appuyer sur y; sinon appuyer sur une autre lettre", DD$
1020 IF DD$= "y" THEN 1040:REM
(ces deux lignes sont introduites le 7 1 2011)
1030 GOSUB 610
1040 GOSUB 630
1050 GOSUB 290:GOSUB 400:GOSUB
510:GOSUB 162
1060 GOSUB 260
1070 PRINT #1, USING ZZ$;RR,AA,HT,X,Y,HV
1080 PRINT #1,:PRINT #1,:K=MKK
1081 gosub
272
1082 PRINT USING ZZ$;RR,AA,HT,X,Y,HV
1085
PRINT :PRINT
1090 INPUT "Autre point appuyez sur p:
arrêt sur a : p ou a ?",PT$:IF
PT$="p" THEN 980
1100 GOTO 1260
1105 rem
bifilaire vertical inclinant
1110 INPUT "INWLW , INELE = 1 ; INWLE
, INELW = 2 : votre choix ?",CH
1120 IF CH=1 THEN K=MK:PRINT #1,"INWLW , INELE":PRINT #1,:GOTO 1140
1130 PRINT #1,"INWLE , INELW":PRINT
#1,
1140 INPUT "Si même déclinaison:
appuyer sur y; sinon appuyer sur une autre lettre", DD$
1150 IF DD$= "y" THEN 1170:REM
(ces deux lignes sont introduites le 7 1 2011)
1160 GOSUB 610
1170 GOSUB 630
1180 GOSUB 290:GOSUB 400:GOSUB 510
1190 IF FIX(AD*10000#)=FIX(Y*10000#) THEN HV=90:GOTO 1220
1200 IF Y>AD THEN GOSUB 202:GOTO 1220
1210 GOSUB 222
1220 GOSUB 260
1230 PRINT #1, USING ZZ$;RR,AA,HT,X,Y,HV
1240 PRINT #1,:PRINT #1,:K=MKK
1241 gosub
272
1242
PRINT USING ZZ$;RR,AA,HT,X,Y,HV
1245
PRINT :PRINT
1250 INPUT "Autre point appuyez sur p:
arrêt sur a : p ou a ?",PT$:IF
PT$="p"
THEN 1110
1260 close:end