Dragon curve: Difference between revisions
Content added Content deleted
m (→{{header|Lambdatalk}}: Tags "lang" corrected) |
(→{{header|Commodore BASIC}}: Added) |
||
Line 1,181: | Line 1,181: | ||
....... ... |
....... ... |
||
hjkl?q</pre> |
hjkl?q</pre> |
||
=={{header|Commodore BASIC}}== |
|||
{{trans|BASIC256}} |
|||
The values of <code>SIN</code> and <code>COS</code> for multiplies of <code>PI / 4</code> are remembered in arrays, so that the program may run (a little) faster. |
|||
{{works with|Commodore BASIC|3.5}} |
|||
<lang basic> |
|||
10 REM DRAGON CURVE |
|||
20 REM SIN, COS IN ARRAYS FOR PI/4 MULTIPL. |
|||
30 DIM S(7),C(7) |
|||
40 QPI=ATN(1) |
|||
50 FOR I=0 TO 7 |
|||
60 S(I)=SIN(I*QPI) |
|||
70 C(I)=COS(I*QPI) |
|||
80 NEXT I |
|||
90 LEVEL=15 |
|||
100 INSIZE=128:REM 2^WHOLE_NUM (LOOKS BETTER) |
|||
110 X=112 |
|||
120 Y=70 |
|||
130 SQ=SQR(2) |
|||
140 ROTQPI=0:ITER=0:RQ=1 |
|||
150 DIM R(LEVEL) |
|||
160 GRAPHIC 2,1 |
|||
170 GOSUB 190 |
|||
180 END |
|||
190 REM DRAGON |
|||
200 IF ROTQPI<0 THEN ROTQPI=ROTQPI+8:GOTO 220 |
|||
210 IF ROTQPI>7 THEN ROTQPI=ROTQPI-8 |
|||
220 IF LEVEL>1 THEN GO TO 290 |
|||
230 YN=S(ROTQPI)*INSIZE+Y |
|||
240 XN=C(ROTQPI)*INSIZE+X |
|||
250 DRAW ,X,Y TO XN,YN |
|||
260 ITER=ITER+1 |
|||
270 X=XN:Y=YN |
|||
280 RETURN |
|||
290 INSIZE=INSIZE*SQ/2 |
|||
300 ROTQPI=ROTQPI+RQ |
|||
310 IF ROTQPI<0 THEN ROTQPI=ROTQPI+8:GOTO 330 |
|||
320 IF ROTQPI>7 THEN ROTQPI=ROTQPI-8 |
|||
330 LEVEL=LEVEL-1 |
|||
340 R(LEVEL)=RQ:RQ=1 |
|||
350 GOSUB 190 |
|||
360 ROTQPI=ROTQPI-R(LEVEL)*2 |
|||
370 IF ROTQPI<0 THEN ROTQPI=ROTQPI+8:GOTO 390 |
|||
380 IF ROTQPI>7 THEN ROTQPI=ROTQPI-8 |
|||
390 RQ=-1 |
|||
400 GOSUB 190 |
|||
410 RQ=R(LEVEL) |
|||
420 ROTQPI=ROTQPI+RQ |
|||
430 IF ROTQPI<0 THEN ROTQPI=ROTQPI+8:GOTO 450 |
|||
440 IF ROTQPI>7 THEN ROTQPI=ROTQPI-8 |
|||
450 LEVEL=LEVEL+1 |
|||
460 INSIZE=INSIZE*SQ |
|||
470 RETURN |
|||
</lang> |
|||
=={{header|Common Lisp}}== |
=={{header|Common Lisp}}== |