; Copyright 2019 Kevin Ryde ; ; This file is part of Math-PlanePath. ; ; Math-PlanePath is free software; you can redistribute it and/or modify it ; under the terms of the GNU General Public License as published by the Free ; Software Foundation; either version 3, or (at your option) any later ; version. ; ; Math-PlanePath is distributed in the hope that it will be useful, but ; WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ; for more details. ; ; You should have received a copy of the GNU General Public License along ; with Math-PlanePath. If not, see . ; a023531.l -- Triangle Spiral by A023531 Turns. ; Kevin Ryde, December 2019 ; ; The turn sequence of Math::PlanePath::TriangleSpiral is OEIS A240025. ; This file is a lightly massaged copy of my upload there. ; Usage: 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. ; ; "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: