-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathARABEST.bc
134 lines (134 loc) · 4.01 KB
/
ARABEST.bc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
1000 A=200:GOTO20:REM ARABESQUE
1010 DIMTB(75):MX=0:MY=0:RC=0:F=.75
1020 CN=0:KM=.104719755:AA=0:BB=0
1030 GOSUB100:HO=9:VE=12:GOSUB110
1040 PRINT" ETWAS GEDULD...";
1050 FORN=0 TO75:TB(N)=SIN(N*KM):NEXTN
1060 HO=5:VE=7:GOSUB110
1070 SR$="A R A B E S Q U E":GOSUB150
1080 HO=6:VE=12:GOSUB110
1090 PRINT"Moechten Sie eine Erklaerung? (J)";
1100 GOSUB5010
1110 IFIN=74 THEN GOSUB4010
1500 REM=== TEKENEN ===
1510 REM --- eerste figuur ---
1520 REM AA=BEGIN BB=EINDE Klokminuten
1530 REM RC=STRAAL MX,MY COORD.MIDDPT
1540 REM F=verhoudingsfactor y/x
1550 GOSUB600
1560 FORN=5 TO60 STEP5
1570 MX=.5+.31*F*TB(N)
1580 MY=.5-.31*TB(N+15)
1590 RC=.18:AA=N+45:BB=N+75
1600 GOSUB3020
1610 RC=.119:AA=N+10:BB=N+50:GOSUB3020
1620 NEXTN
1630 FORN=10 TO60 STEP10
1640 MX=.5+.12*F*TB(N)
1650 MY=.5-.12*TB(N+15)
1660 RC=.06:AA=N+20:BB=N+40
1670 GOSUB3020
1680 NEXTN
1690 GOSUB5010
1700 REM --- tweede figuur ---
1710 GOSUB600
1720 FORN=3 TO60 STEP3
1730 MX=.5+.75*F*TB(N)
1740 MY=.5-.75*TB(N+15)
1750 RC=.75:AA=N+24:BB=N+36
1760 GOSUB3020
1770 NEXTN
1780 GOSUB5010
1800 REM --- derde figuur ---
1810 GOSUB600
1820 FORN=3 TO60 STEP3
1830 MX=.5+.24*F*TB(N)
1840 MY=.5-.24*TB(N+15)
1850 RC=.25:AA=30+N:BB=30+N
1860 GOSUB3020
1870 NEXTN
1880 GOSUB5010
1900 REM --- vierde figuur ---
1910 GOSUB600:AA=0:BB=0
1920 FORN=12 TO60 STEP12
1930 FORRC=0.25 TO0.025 STEP-0.025
1940 MX=.5+RC*F*TB(N)
1950 MY=.5-RC*TB(N+15)
1960 GOSUB3020
1970 NEXTRC
1980 NEXTN
1990 GOSUB5010
2000 GOTO1550
3000 REM=== TEKEN CIRKELBOOG ===
3010 REM --- plot eerste punt ---
3020 TT=AA:GOSUB3110
3030 CN=1:GOSUB620:CN=0
3040 IFBB<=AA THENBB=BB+60
3050 REM --- maak rest v.d. boog ---
3060 FORNN=AA TOBB
3070 TT=NN:GOSUB3110:GOSUB630
3080 NEXTNN
3090 RETURN
3100 REM --- subr.bereken coordin ---
3110 IFTT>60 THENTT=TT-60:GOTO3110
3120 HO=MX+F*RC*TB(TT)
3130 VE=MY-RC*TB(TT+15)
3140 RETURN
4000 REM=== UITLEG ===
4010 GOSUB100
4020 PRINT:PRINT" Das Programm zeichnet Figuren, die"
4030 PRINT:PRINT" aus Teilen von Kreisboegen aufgebaut"
4040 PRINT:PRINT" werden. Die Figur erscheint nach"
4050 PRINT:PRINT" Tastendruck."
4060 PRINT:PRINT" Sie koennen aber auch"
4070 PRINT:PRINT" selbst noch mehr von aehnlichen"
4080 PRINT:PRINT" Figuren in das Programm einbauen."
4090 PRINT:PRINT" Wie das zu machen ist, ist dem Listing"
4100 PRINT:PRINT" zu entnehmen (ab Zeile 30000)."
4110 PRINT:PRINT" Taste 'S' = Programm verlassen."
4120 PRINT:PRINT"---> Druecke eine Taste...";
4130 GOSUB210:RETURN
5000 REM=== TEKENING KLAAR ===
5010 SV=7:SP=100:SD=1:GOSUB400
5020 GOSUB210:IFIN=83 THEN950
5030 RETURN
5040 REM==============================
30000 REM De subroutine die cirkelbogen
30010 REM tekent gebruikt de volgende
30020 REM variabelen:
30030 REM MX en MY zijn de coordinaten
30040 REM van het middelpunt v.d.cirkel
30050 REM RC is de straal van de cirkel
30060 REM AA is het begin van de boog
30070 REM BB is het einde van de boog
30080 REM AA en BB worden opgegeven in
30090 REM 'klokminuten' dus boven is 0,
30100 REM rechtsmidden is 15, onder is
30110 REM 30 , linksmidden is 45 en dan
30120 REM kan boven ook nog 60 zijn.
30130 REM Voor een liggende halve cirkel
30140 REM geldt dus AA=15 en BB=45 en
30150 REM voor een staande halve cirkel
30160 REM geldt AA=45 en BB=15.
30170 REM ALLE HELE WAARDEN VAN 0 - 60
30180 REM zijn toegestaan.
30190 REM==============================
30200 REM Omdat sinus-berekeningen lang
30210 REM duren wordt een sinustabel
30220 REM aangelegd in TB(). De tabel
30230 REM klimt met stappen van 6 graden
30240 REM zodat de 'cirkels' eigenlijk
30250 REM 60-hoeken zijn. De cosinus
30260 REM wordt gevonden als sinus(a+90)
30270 REM===============================
30280 REM GEMAAKT OP EEN BBC B COMPUTER
30290 REM 4 MAART 1987
30300 REM DOOR
32000 REM Ch.W.Brederode
32010 REM Von Bonninghausenlaan 33
32020 REM 2161 ES LISSE
32030 REM TROS-RADIO dd 870429
32040 REM ---------------------------
32050 REM deutsch: J.Baumann
32060 REM Erstausstrahlung: DS-Kultur
32070 REM-spezial 900919