The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

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

$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.

SEE ALSO

Math::PlanePath, Math::PlanePath::SquareSpiral

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

HOME PAGE

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

LICENSE

Copyright 2010, 2011 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/>.