---
name: "Math::PlanePath::FibonacciWordFractal"
section: "3pm"
platform: "linux"
package: "libmath-planepath-perl"
version: "129-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Math::PlanePath::FibonacciWordFractal"
---

# Math::PlanePath::FibonacciWordFractal(3pm)

## 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

Alexis Monnerot-Dumaine, "The Fibonacci Word Fractal", March 2009. \<https://hal.archives-ouvertes.fr/hal-00367972/\>

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
       1      straight ahead
```

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,

\<http://oeis.org/A156596\> (etc)

```
    A332298   X coordinate, starting at n=1
    A332299   Y-1 coordinate, starting at n=1
    A156596   turn sequence, 0=straight,1=right,2=left
    A143668   turn sequence, 0=right,1=straight,2=left
    A171587   abs(dX), so 1=horizontal,0=vertical
    A265318   N at locations by diagonals
    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
```

## SEE ALSO

Math::PlanePath, Math::PlanePath::DragonCurve, Math::PlanePath::WythoffArray

Math::NumSeq::FibonacciWord

## HOME PAGE

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

## LICENSE

Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 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 \<http://www.gnu.org/licenses/\>.
