Dragon curve: Difference between revisions
Content deleted Content added
→{{header|GW-BASIC}}: Doubled x-coords for better look in SCREEN 2. Structure: IF-THEN-ELSE used. |
→{{header|GW-BASIC}}: ... MOD 8 (originally realized by nested IFs) replaced by bitwise operations (... AND 7). |
||
Line 803: | Line 803: | ||
{{works with|BASICA}} |
{{works with|BASICA}} |
||
{{works with|QBasic}} |
{{works with|QBasic}} |
||
{{trans|Commodore BASIC|<code>... MOD 8</code> (originally realized by nested <code>IF</code>s) replaced by bitwise operations (<code>... AND 7</code>).}} |
|||
{{trans|Commodore BASIC}} |
|||
<syntaxhighlight lang="qbasic">10 REM Dragon curve |
<syntaxhighlight lang="qbasic">10 REM Dragon curve |
||
20 REM SIN, COS in arrays for PI/4 multipl. |
20 REM SIN, COS in arrays for PI/4 multipl. |
||
Line 812: | Line 812: | ||
70 C(I) = COS(I * QPI) |
70 C(I) = COS(I * QPI) |
||
80 NEXT I |
80 NEXT I |
||
90 LEVEL = 15 |
90 LEVEL% = 15 |
||
100 INSIZE = 128: REM 2^WHOLE_NUM (looks better) |
100 INSIZE = 128: REM 2^WHOLE_NUM (looks better) |
||
110 X = 112 |
110 X = 112 |
||
120 Y = 70 |
120 Y = 70 |
||
130 SQ = SQR(2) |
130 SQ = SQR(2) |
||
140 ROTQPI = 0: ITER = 0: RQ = 1 |
140 ROTQPI% = 0: ITER% = 0: RQ% = 1 |
||
150 DIM R(LEVEL) |
150 DIM R%(LEVEL%) |
||
160 SCREEN 2: CLS |
160 SCREEN 2: CLS |
||
170 GOSUB 190 |
170 GOSUB 190 |
||
180 END |
180 END |
||
190 REM ** Dragon |
190 REM ** Dragon |
||
200 |
200 ROTQPI% = ROTQPI% AND 7 |
||
210 IF LEVEL > 1 THEN GOTO 280 |
210 IF LEVEL% > 1 THEN GOTO 280 |
||
220 YN = S(ROTQPI) * INSIZE + Y |
220 YN = S(ROTQPI%) * INSIZE + Y |
||
230 XN = C(ROTQPI) * INSIZE + X |
230 XN = C(ROTQPI%) * INSIZE + X |
||
240 LINE (2 * X, Y)-(2 * XN, YN): REM For SCREEN 2 doubled x-coords |
240 LINE (2 * X, Y)-(2 * XN, YN): REM For SCREEN 2 doubled x-coords |
||
250 ITER = ITER + 1 |
250 ITER% = ITER% + 1 |
||
260 X = XN: Y = YN |
260 X = XN: Y = YN |
||
270 RETURN |
270 RETURN |
||
280 INSIZE = INSIZE * SQ / 2 |
280 INSIZE = INSIZE * SQ / 2 |
||
290 ROTQPI = ROTQPI + RQ |
290 ROTQPI% = (ROTQPI% + RQ%) AND 7 |
||
⚫ | |||
300 IF ROTQPI < 0 THEN ROTQPI = ROTQPI + 8 ELSE IF ROTQPI > 7 THEN ROTQPI = ROTQPI - 8 |
|||
310 LEVEL = |
310 R%(LEVEL%) = RQ%: RQ% = 1 |
||
⚫ | |||
320 R(LEVEL) = RQ: RQ = 1 |
|||
330 ROTQPI% = (ROTQPI% - R%(LEVEL%) * 2) AND 7 |
|||
⚫ | |||
340 |
340 RQ% = -1 |
||
⚫ | |||
350 IF ROTQPI < 0 THEN ROTQPI = ROTQPI + 8 ELSE IF ROTQPI > 7 THEN ROTQPI = ROTQPI - 8 |
|||
360 RQ = |
360 RQ% = R%(LEVEL%) |
||
370 ROTQPI% = (ROTQPI% + RQ%) AND 7 |
|||
⚫ | |||
380 |
380 LEVEL% = LEVEL% + 1 |
||
390 |
390 INSIZE = INSIZE * SQ |
||
⚫ | |||
400 IF ROTQPI < 0 THEN ROTQPI = ROTQPI + 8 ELSE IF ROTQPI > 7 THEN ROTQPI = ROTQPI - 8 |
|||
⚫ | |||
420 INSIZE = INSIZE * SQ |
|||
⚫ | |||
==={{header|IS-BASIC}}=== |
==={{header|IS-BASIC}}=== |