Z<-ULAM N;DZ;T |Ulam spiral to size N |See http://mathworld.wolfram.com/PrimeSpiral.html K<-Z<-0 WHILE N>T<-c/,Z; DZ<-T+1+ic/r:Z ->(A1,A2,A3,A4)[K #mod 4] A1:Z<-Z,ymDZ & ->CC A2:Z<-(mDZ),:Z & ->CC A3:Z<-(yDZ),Z & ->CC A4:Z<-Z,:DZ & ->CC CC:K++ & WEND Z<-D_MAP N;J |Map NxN to N along diagonals Z<-Z*Z<-((1+i2*N)%2) #outer +Z<-1+iN Z<-Z-y(N*1 2)ri2*N J<-,0=1 #and (i2*N)#outer + i2*N Z<-(N*2 2)rJ\,Z Z<-S2_MAP N;I;T |tile from mapping NxN->N IF 1=rN; N<-N,N Z<-Nr(I*1+I<-1+iN[1])%2 Z<-Z+0,: +\(1+iN[0]-1)#outer + iN[1] Z<-QZ_XPM STR;G;H;VX |Make a .xpm from S2_MAP G<-SD_CV AB<-2 500000r1 H<-S2_MAP 400 600 Z<-5 #sed":d" #print"-size 400 600" #print ".1234."[5fG[H]] Z<-WW.FSCR 5 Z<-S_MAP N;I;J;T |Map NxN->N IF 1=rN; N<-N,N T<-+\i2*c/N |Triangular numbers I<-1+iN[0]; J<-1+iN[1] Z<-T[_1+I #outer + J]-N[1]/y_1+I # creation of linux .xpm files "XPM.OPTS" -size SIZE<-NARGS 2 -o OFILE<-SHIFT -ofile OFILE<-SHIFT -var VAR<-$NL[SHIFT] Z<-MK_XPM STR;CM;SIZE;LUT;OFILE;T;VAR;WP |Create linux .xpm file Z<-OFILE<-VAR<-LUT<-"" WP<-0 IF 00)/irT T<-((yCOLOR.MAP[:1]) e LUT)/i1tr:COLOR.MAP; CM<-COLOR.MAP[T] 0 r #sed":d" #print "/* XPM */" #print "static char * t_xpm[] = {" T<- z (m SIZE), (rLUT), 1 #print """",T,"""," #print "/* colors */"; #print CM Z<-(_1 d 1 d #mattoss ("""",Z,""""), ","),"};" #print "/* pixels */"; #print Z IF OFILE; 0 r #sed":u ",OFILE Z<-OFILE "COLOR.MAP" " s None c None", ". c #000000", "1 c #00FFFF", "2 c #FF0000", "3 c #FFFF00", "4 c #0000FF", "5 c #FF00FF", "6 c #00FF00", "7 c #E0E0E0", "8 c #202020", "9 c #008080", "A c #800000", "B c #808000", "C c #000080", "D c #800080", "E c #008080", "F c #FFFFFF", # show some features of the map N->NxN Z<-SHOW_LINES STR;CWD;K;DK;M2;X CWD<-#cd M2<-S_MAP 400 640 K<-16; DK<-1 STR<-"-start K<-#fi SHIFT|-step DK<-#fi SHIFT" GETOPTS "" #ifndef "STR" WHILE K<2000 |X<-".123456789ABCDEF."[17 f M2 #mod K] X<-".123456789ABCDEF."[(M2 #mod K) #mod 16] Z<-MK_XPM"-o t.xpm -var X" 0 r $VA[0]<-_ESC, "c", _ESC,"]20;", CWD,"/t.xpm", #av 7 K<-K+DK WEND Z<-SHOW_RAYS STR;CWD;I;J;K;DK;M2;MAX;X;XI CWD<-#cd M2<-S_MAP 400 640 K<-1; DK<-1 STR<-"-start K<-#fi SHIFT|-step DK<-#fi SHIFT" GETOPTS "" #ifndef "STR" WHILE K<200000 XI<-(MAX<-c/, M2)r0 I<-I*I<-(-2*K)+ i (2*K)+"N" #av 1+#sqrt 8*MAX-K XI[(I+_1+8*K)%8]<-1 X<-".1"[XI[M2]] Z<-MK_XPM"-o t.xpm -var X" 0 r $VA[0]<-_ESC, "c", _ESC,"]20;", CWD,"/t.xpm", #av 7 K<-K+DK WEND "PCM.OPTS" -cnt CNT<-#fi SHIFT -g G<-#fi SHIFT -start K<-#fi SHIFT -step DK<-#fi SHIFT Z<-SHOW_PCM STR;CNT;CWD;G;I;J;K;DK;MAT;X;Y;XI |Parametric contour map STR<-"" #ifndef "STR" CWD<-#cd CNT<-1000 G<-5.0 Z<-yi400 640; Y<-Z[0]%400.0; X<-Z[1]%640.0 K<-0.0; DK<-0.001 STR<-PCM.OPTS GETOPTS STR WHILE 0600; N<-600 MAX<-c/,H<-ULAM N*N;XI<-(1+MAX)r0 T3<-(N*1+N<-i2*N)%2; XI[T3]<-1 MZ<-".3"[XI[H]] Z<-MK_XPM"-o t3.xpm -var MZ" 0 r #cmd"display t3.xpm &" Z<-QUAD_SPIRAL STR;N;EXPR;H;MAX;MZ;TX;XI |Mark points of quadratic form on a spiral SIZE<-400 400 EXPR<-"(N*1+N)%2" STR<-"-size SIZE<-#fi SHIFT" GETOPTS STR IF 0640; N<-640 MAX<-c/,H<-ULAM N*N XI<-(1+MAX)r0 N<-i5*N "TX<-", EXPR 0 r #do"TX<-", EXPR XI[TX]<-1 MZ<-".3"[XI[H]] Z<-MK_XPM"-o tq.xpm -var MZ" 0 r #cmd"display tq.xpm &" "XNT.FNS" Z<- (X*X-30*T)-Y*Y-40*T Z<- (X*X)+Y*Y+120*T Z<- (X*1-X*X+40*T)-Y*Y-50*T "XPCM.OPTS" -g G<-#fi SHIFT -cnt CNT<-#fi SHIFT -o DST<-SHIFT -size SIZE<-NARGS 2 -start K<-#fi SHIFT -step DK<-#fi SHIFT Z<-XPCM STR;CNT;CWD;DST;G;I;J;K;DK;LST;MAT;SIZE;X;Y;XI |Parametric contour map with output frames DST<-LST<-""; STR<-"" #ifndef "STR" CNT<-200; G<-8.8; SIZE<-400 640 K<-0.0; DK<-0.05 STR<-XPCM.OPTS GETOPTS STR CWD<-#cd Z<-yiSIZE; Y<-Z[0]%1.0*SIZE[0]; X<-Z[1]%1.0*SIZE[1] WHILE 00 Z<-MK_XPM"-o ",OFILE," -var R"