++ed by:
Kevin Ryde
and 1 contributors

# NAME

Math::PlanePath::GreekKeySpiral -- square spiral with Greek key motif

# SYNOPSIS

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

# DESCRIPTION

This path makes a spiral with a Greek key scroll motif,

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

^

-3  -2  -1  X=0  1   2   3   4   5   6   7   8 ...``````

The repeating figure is a 3x3 pattern

``````       |
*   *---*
|   |   |      left vertical
*---*   *      going upwards
|
*---*---*
|``````

The turn excursion is to the outside of the 3-wide channel and forward in the direction of the spiral. The overall spiraling is the same as the SquareSpiral, but composed of 3x3 sub-parts.

## Sub-Part Joining

The verticals have the "entry" to each figure on the inside edge, as for example N=90 to N=91 above. The horizontals instead have it on the outside edge, such as N=63 to N=64 along the bottom. The innermost N=1 to N=9 is a bottom horizontal going right.

``````      *---*---*
|       |        bottom horizontal
*---*   *        going rightwards
|   |
--*---*   *-->  ``````

On the horizontals the excursion part is still "forward on the outside", as for example N=73 through N=76, but the shape is offset. The way the entry is alternately on the inside and outside for the vertical and horizontal is necessary to make the corners join.

# FUNCTIONS

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

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

Create and return a new Greek key spiral object.

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

Return the X,Y coordinates of point number `\$n` on the path.

For `\$n < 1` the return is an empty list, it being considered the path starts at 1.

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

Return the point number for coordinates `\$x,\$y`. `\$x` and `\$y` are each rounded to the nearest integer, which has the effect of treating each N in the path as centred in a square of side 1, so the entire plane is covered.

Jo Edkins Greek Key pages `http://gwydir.demon.co.uk/jo/greekkey/index.htm`

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