Dragon curve: Difference between revisions

Content added Content deleted
m (→‎{{header|Lambdatalk}}: Tags "lang" corrected)
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}}==