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

140 HV=HV*180#/PI:return

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,

911  gosub 272

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    

 

RETOUR AU MENU