# # Fractal routines. Sierpinski gasket. # Z<-NT LST_TILES M;K;SIZE;T |Break a matrix into tiles, one line per tile |Give tile data in row major order NT<-5 6 #ifndef "NT" | tile size 40x50 on 200x300 image Z<-""; K<-r:M; SIZE<-K%NT WHILE SIZE[1] <= _1tK<-r:M T<-(K[0], SIZE[1])tM; M<-(0,SIZE[1])dM Z<-Z,:(NT[0],*/SIZE)rT WEND Z<-Z[,y(mNT)r i*/NT] # # Reworking of curve sketching routines # "MXY.OPTS" -axes AXES<-SHIFT -eps EPS<-SHIFT -src SRC<-SHIFT -lut LUT<-SHIFT -size SIZE<-SHIFT -box BOX<-SHIFT -zone BOX<-SHIFT -o OFILE<-SHIFT Z<-MAP_FXY STR;AXES;BOX;EPS;EXPR;SIZE;SRC;TA;X;Y;YX |Implicit function. Point set F(x,y) = 0 |Zone: bounding box x0,y0,x1,y1 x0<=x<=x1 y0<=y<=y1 |Example Z<-MAP_FXY"-src MA -box -4,-3,4,3 _1+(X*X)+Y*Y" |Import LUT BOX<-"-3,-2,3,2" EPS<-"0.01" Z<-STR<-MXY.OPTS GETOPTS STR<-"" #ifndef "STR" IF 0=r EXPR<-STR; ->0 IF 2=rLUT; LUT<-1 2/LUT | Axes, curve SIZE<-r TA<- $NL[SRC] | Height x Width BOX<-"(,)" PARSE_NUM BOX | x0,y0,x1,y1 IF 0=rAXES; ->AA Z<-"," PARSE_NUM AXES; YX<-i0 X<-"N" #av SIZE[1]*(Z[0]-BOX[0])%1.0* BOX[2]-BOX[0] IF (X>0) f X0) f Y0 IF NN=2; TA<-(((iSIZE[0])-SIZE[1])%2) m TA IF 0=r OFILE; Z<-TA; ->0 Z<-MK_XPM "-var TA -o ", OFILE Z<-T DRAW_SG STR;CNT;I;LUT;SRC;SIZE;U;YX |Draw Sierpinski gasket with random walk algorithm |Some vertices of the triangle maybe outside the viewport. I<-0; CNT<-4000; Z<-SRC<-""; LUT<-"F." STR<-"-cnt CNT<-#fi SHIFT" GETOPTS STR IF 0=rSTR; ->0 IF 0=#nc "T"; ->0 SIZE<-rSRC<-$NL[SHIFT] IF 0AA T<-"," PARSE_NUM STR IF 6 #ne rT; T<-? 6 r m SIZE AA: T<-m 3 2rT I<-0; YX<-(CNT,2)r0; Z<-(+/T)%3 WHILE I0) f 0 < SIZE-:YX YX<-U/:YX PIX<-SIZE r LUT[0] PIX*[SIZE b YX]<-LUT[1] Z<-MK_XPM"-var PIX -o ", OFILE "GSPIN.OPTS" -alpha AL<- #fi SHIFT -cnt CNT<-#fi SHIFT -lut LUT<-SHIFT -size SIZE<-SHIFT -gif GIF<-SHIFT -phi PHI<-#fi SHIFT -sc SC<-SHIFT Z<-SG_POINT T;CNT |Select a point on sierpiski fractal defined by T T<-3 2rT; Z<-(+/T)%3.0; CNT<-50 WHILE 00 IF 0 = #nc "TP"; (((rTP)%2),2) r TP<-"," PARSE_NUM STR IF 3>1tr:TP; ->0 TP<-TP+: (m SIZE%2)-(+/TP)%3 P<-SG_POINT TP Z<-CNT START_NARRATIVE "gasket.txt" WHILE 00 Z<-#deb ," ", Z<-$NL[STR] N<-rTBAR.BITS<-TXT2XPM "-fnt ../font/sc.fnt ", Z TBAR.DX <-1+(0 c N[1]-300)%CNT Z<-N, TBAR.DX Z<-IMG SUB_TITLE STR;I;M;N |Set a subtitle |Global TBAR.BITS, TBAR.DX M<-rTBAR.BITS N<-rZ<-IMG I<-(N[0]-M[0])+iM[0] Z[I]<-(M[0], N[1])t TBAR.BITS TBAR.BITS<-TBAR.DX m TBAR.BITS |Scroll TBAR.BITS Z<-IMG TITLE_BAR STR;J;N;SIZE |Add BW title frame at bottom of an image J<-iN<-rZ<-TXT2XPM STR IF 1 #ne #nc "IMG"; ->0 SIZE<-rIMG J<-SIZE b J+:(SIZE[0]-N[0]),0 IMG*[J]<-,Z Z<-IMG