Sierpinski Curve

 


Продолжение вчерашней сортировки папки. Нашелся исходник на Atari Basic, я екго немного переделал:


   4 REM SIERPINSKI CURVES BY ALLAN SHARPE FROM PAGE 6 MAGAZINE
  15 CLS : DIM S(10): LET SP=1
  50 FOR Z=1 TO 4
  61 GO SUB 100
  62 NEXT Z
  90 STOP
 100 LET H0=96: LET H=H0/4: LET X=3.3*H: LET Y=3*H: LET I=0
 110 LET I=I+1: LET X=X-H: LET H=H/2: LET Y=Y+H
 120 IF I<Z THEN GO TO 110
 130 LET PS=I: GO SUB 600
 140 GO SUB 200: LET A=H: LET B=-H: GO SUB 800
 150 GO SUB 300: LET A=-H: LET B=-H: GO SUB 800
 160 GO SUB 400: LET A=-H: LET B=H: GO SUB 800
 170 GO SUB 500: LET A=H: LET B=H: GO SUB 800
 180 GO SUB 700: RETURN
 200 IF TP<=0 THEN RETURN
 220 LET PS=TP-1: GO SUB 600
 230 GO SUB 200: LET A=H: LET B=-H: GO SUB 800
 240 GO SUB 300: LET A=2*H: LET B=0: GO SUB 800
 250 GO SUB 500: LET A=H: LET B=H: GO SUB 800
 260 GO SUB 200
 270 GO SUB 700: RETURN
 300 IF TP<=0 THEN RETURN
 320 LET PS=TP-1: GO SUB 600
 330 GO SUB 300: LET A=-H: LET B=-H: GO SUB 800
 340 GO SUB 400: LET A=0: LET B=-2*H: GO SUB 800
 350 GO SUB 200: LET A=H: LET B=-H: GO SUB 800
 360 GO SUB 300
 370 GO SUB 700: RETURN
 400 IF TP<=0 THEN RETURN
 420 LET PS=TP-1: GO SUB 600
 430 GO SUB 400: LET A=-H: LET B=H: GO SUB 800
 440 GO SUB 500: LET A=-2*H: LET B=0: GO SUB 800
 450 GO SUB 300: LET A=-H: LET B=-H: GO SUB 800
 460 GO SUB 400
 470 GO SUB 700: RETURN
 500 IF TP<=0 THEN RETURN
 520 LET PS=TP-1: GO SUB 600
 530 GO SUB 500: LET A=H: LET B=H: GO SUB 800
 540 GO SUB 200: LET A=0: LET B=2*H: GO SUB 800
 550 GO SUB 400: LET A=-H: LET B=H: GO SUB 800
 560 GO SUB 500
 570 GO SUB 700: RETURN
 600 LET SP=SP+1: LET S(SP)=PS: LET TP=PS: RETURN
 700 LET SP=SP-1: LET TP=S(SP): RETURN
 800 PLOT X,Y: DRAW A,B
 820 LET X=X+A: LET Y=Y+B: RETURN

Комментарии