and 1 contributors

# NAME

Math::PlanePath::FibonacciWordFractal -- turns by Fibonacci word bits

# SYNOPSIS

`````` use Math::PlanePath::FibonacciWordFractal;
my \$path = Math::PlanePath::FibonacciWordFractal->new;
my (\$x, \$y) = \$path->n_to_xy (123);``````

# DESCRIPTION

This is an integer version of the Fibonacci word fractal

It makes turns controlled by the "Fibonacci word" sequence, sometimes called the "golden string".

``````    11  | 27-28-29    33-34-35          53-54-55    59-60-61
|  |     |     |     |           |     |     |     |
10  | 26    30-31-32    36          52    56-57-58    62
|  |                 |           |                 |
9  | 25-24          38-37          51-50          64-63
|     |           |                 |           |
8  |    23          39    43-44-45    49          65
|     |           |     |     |     |           |
7  | 21-22          40-41-42    46-47-48          66-67
|  |                                               |
6  | 20    16-15-14                      74-73-72    68
|  |     |     |                       |     |     |
5  | 19-18-17    13                      75    71-70-69
|              |                       |
4  |          11-12                      76-77
|           |                             |
3  |          10                            78
|           |                             |
2  |           9--8                      80-79
|              |                       |
1  |  1--2--3     7                      81    85-86-87
|  |     |     |                       |     |     |
Y=0 |  0     4--5--6                      82-83-84    88-89-...
+-------------------------------------------------------
X=0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 ``````

A current direction up,down,left,right is maintained, starting in the up direction. The path moves in the current direction and then may turn or go straight according to the Fibonacci word,

``````    Fib word
--------
0      turn left if even index, right if odd index

The Fibonacci word is reckoned as starting from index=1, so for example at N=0 draw a line upwards to N=1 and the first Fibonacci word value is 0 and its position index=1 is odd so turn to the right.

``````     N     Fibonacci word
---    --------------
1       0    turn right
2       1
3       0    turn right
4       0    turn left
5       1
6       0    turn left
7       1``````

The result is self-similar blocks within the first quadrant X>=0,Y>=0. New blocks extend at N values which are Fibonacci numbers. For example N=21 a new block begins above, then N=34 a new block across, N=55 down, N=89 across again, etc.

The new blocks are a copy of the shape starting N=0 but rotated and/or transposed according to the replication level mod 6,

``````    level mod 6      new block
-----------      ---------
0           transpose
1                         rotate -90
2           transpose and rotate -90
3           transpose
4                         rotate +90
5           transpose and rotate +90``````

# FUNCTIONS

See "FUNCTIONS" in Math::PlanePath for behaviour common to all path classes.

`\$path = Math::PlanePath::FibonacciWordFractal->new ()`

Create and return a new path object.

`(\$x,\$y) = \$path->n_to_xy (\$n)`

Return the X,Y coordinates of point number `\$n` on the path. Points begin at 0 and if `\$n < 0` then the return is an empty list.

Fractional positions give an X,Y position along a straight line between the integer positions.

`\$n = \$path->n_start()`

Return 0, the first N in the path.

# OEIS

Entries in Sloane's Online Encyclopedia of Integer Sequences related to this path include,

``````    A156596  - turn sequence, 0=straight,1=right,2=left
A171587  - abs(dX), so 1=horizontal,0=vertical

A003849  - Fibonacci word with values 0,1
A005614  - Fibonacci word with values 1,0
A003842  - Fibonacci word with values 1,2
A014675  - Fibonacci word with values 2,1``````

Math::NumSeq::FibonacciWord

http://user42.tuxfamily.org/math-planepath/index.html