; a023531.l -- Triangle Spiral by A023531 Turns. ; Kevin Ryde, December 2019 ; ; Name this file a023531.l and run from the command line ; ; xfractint type=lsystem lfile=a023531.l lname=TriangleSpiral params=9 ; ; Or interactively, the usual key "t", choose type lsystem, "F6" files, ; "F6" again the current directory, choose a023531.l, etc. Must name ; the file just foo.l not foo.l.txt for it to appear in the file chooser. ; ; "lname" can be TriangleSpiral or TriangleSpiral2 which are the ; variations below. Interactively, "t" and choose type lsystem ; (again) goes to the available L-systems in the current file. ; ; "params=9" is the expansion level (order). This is the number of ; sides in the spiral here. Interactively, key "z" changes just the ; order. ; The symbol string generated is like ; ; S F T + F F T + F F F T + F F F F T + F F F F F T + ; a(n) = 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 ; n = 0 1 2 3 4 5 6 7 8 9 10 13 14 ; ; F is draw forward. ; Turn a(n) is after each F, and is either "+" for a(n)=1 turn, or ; nothing for a(n)=0 which is no turn. ; T is a non-drawing symbol. It precedes each "+" and its expansion ; increases the length of the preceding run of Fs which are a(n)=0s ; and which are the preceding side. ; ; The morphism given in the comments in A023531 has 1->0,1 which here ; would be a rule like "+ = F+". But Fractint doesn't allow rewrite ; of "+", hence T before each + to achieve the same result. TriangleSpiral { Angle 3 ; 120 degrees Axiom S S = SFT+ T = FT } ; A little variation can be made by putting the T before each run of ; Fs instead of after. The symbol string generated is then like ; ; S T F + T F F + T F F F + T F F F F + T F F F F F + ; ; T is still used to increase the length of the Fs, but the Fs following it. ; In this form, T is also at the start of the string which makes it a ; little less like the morphism 1->0,1. TriangleSpiral2 { Angle 3 ; 120 degrees Axiom S S = STF+ T = TF } ; Local variables: ; compile-command: "xfractint type=lsystem lfile=a023531.l lname=TriangleSpiral params=9" ; End: