1Math::PlanePath::FibonaUcsceirWoCrodnFtrraicbtuatle(d3M)Paetrhl::DPolcaunmeePnattaht:i:oFnibonacciWordFractal(3)
2
3
4
6 Math::PlanePath::FibonacciWordFractal -- turns by Fibonacci word bits
7
9 use Math::PlanePath::FibonacciWordFractal;
10 my $path = Math::PlanePath::FibonacciWordFractal->new;
11 my ($x, $y) = $path->n_to_xy (123);
12
14 This is an integer version of the Fibonacci word fractal
15
16 Alexis Monnerot-Dumaine, "The Fibonacci Word Fractal", February
17 2009. <http://hal.archives-ouvertes.fr/hal-00367972_v1/>
18 <http://hal.archives-ouvertes.fr/docs/00/36/79/72/PDF/The_Fibonacci_word_fractal.pdf>
19
20 It makes turns controlled by the "Fibonacci word" sequence, sometimes
21 called the "golden string".
22
23 11 | 27-28-29 33-34-35 53-54-55 59-60-61
24 | | | | | | | | |
25 10 | 26 30-31-32 36 52 56-57-58 62
26 | | | | |
27 9 | 25-24 38-37 51-50 64-63
28 | | | | |
29 8 | 23 39 43-44-45 49 65
30 | | | | | | |
31 7 | 21-22 40-41-42 46-47-48 66-67
32 | | |
33 6 | 20 16-15-14 74-73-72 68
34 | | | | | | |
35 5 | 19-18-17 13 75 71-70-69
36 | | |
37 4 | 11-12 76-77
38 | | |
39 3 | 10 78
40 | | |
41 2 | 9--8 80-79
42 | | |
43 1 | 1--2--3 7 81 85-86-87
44 | | | | | | |
45 Y=0 | 0 4--5--6 82-83-84 88-89-...
46 +-------------------------------------------------------
47 X=0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
48
49 A current direction up,down,left,right is maintained, starting in the
50 up direction. The path moves in the current direction and then may
51 turn or go straight according to the Fibonacci word,
52
53 Fib word
54 --------
55 0 turn left if even index, right if odd index
56 1 straight ahead
57
58 The Fibonacci word is reckoned as starting from index=1, so for example
59 at N=0 draw a line upwards to N=1 and the first Fibonacci word value is
60 0 and its position index=1 is odd so turn to the right.
61
62 N Fibonacci word
63 --- --------------
64 1 0 turn right
65 2 1
66 3 0 turn right
67 4 0 turn left
68 5 1
69 6 0 turn left
70 7 1
71
72 The result is self-similar blocks within the first quadrant X>=0,Y>=0.
73 New blocks extend at N values which are Fibonacci numbers. For example
74 N=21 a new block begins above, then N=34 a new block across, N=55 down,
75 N=89 across again, etc.
76
77 The new blocks are a copy of the shape starting N=0 but rotated and/or
78 transposed according to the replication level mod 6,
79
80 level mod 6 new block
81 ----------- ---------
82 0 transpose
83 1 rotate -90
84 2 transpose and rotate -90
85 3 transpose
86 4 rotate +90
87 5 transpose and rotate +90
88
90 See "FUNCTIONS" in Math::PlanePath for behaviour common to all path
91 classes.
92
93 "$path = Math::PlanePath::FibonacciWordFractal->new ()"
94 Create and return a new path object.
95
96 "($x,$y) = $path->n_to_xy ($n)"
97 Return the X,Y coordinates of point number $n on the path. Points
98 begin at 0 and if "$n < 0" then the return is an empty list.
99
100 Fractional positions give an X,Y position along a straight line
101 between the integer positions.
102
103 "$n = $path->n_start()"
104 Return 0, the first N in the path.
105
107 Entries in Sloane's Online Encyclopedia of Integer Sequences related to
108 this path include,
109
110 <http://oeis.org/A156596> (etc)
111
112 A156596 - turn sequence, 0=straight,1=right,2=left
113 A171587 - abs(dX), so 1=horizontal,0=vertical
114
115 A003849 - Fibonacci word with values 0,1
116 A005614 - Fibonacci word with values 1,0
117 A003842 - Fibonacci word with values 1,2
118 A014675 - Fibonacci word with values 2,1
119
121 Math::PlanePath, Math::PlanePath::DragonCurve,
122 Math::PlanePath::WythoffArray
123
124 Math::NumSeq::FibonacciWord
125
127 <http://user42.tuxfamily.org/math-planepath/index.html>
128
130 Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018 Kevin Ryde
131
132 This file is part of Math-PlanePath.
133
134 Math-PlanePath is free software; you can redistribute it and/or modify
135 it under the terms of the GNU General Public License as published by
136 the Free Software Foundation; either version 3, or (at your option) any
137 later version.
138
139 Math-PlanePath is distributed in the hope that it will be useful, but
140 WITHOUT ANY WARRANTY; without even the implied warranty of
141 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
142 General Public License for more details.
143
144 You should have received a copy of the GNU General Public License along
145 with Math-PlanePath. If not, see <http://www.gnu.org/licenses/>.
146
147
148
149perl v5.30.0 2019-M0a8t-h1:7:PlanePath::FibonacciWordFractal(3)