Math::PlanePath::GreekKeySpiral -- square spiral with Greek key motif
use Math::PlanePath::GreekKeySpiral; my $path = Math::PlanePath::GreekKeySpiral->new; my ($x, $y) = $path->n_to_xy (123);
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.
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.
$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.
$n
For $n < 1 the return is an empty list, it being considered the path starts at 1.
$n < 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.
$x,$y
$x
$y
Math::PlanePath, Math::PlanePath::SquareSpiral
Jo Edkins Greek Key pages http://gwydir.demon.co.uk/jo/greekkey/index.htm
http://gwydir.demon.co.uk/jo/greekkey/index.htm
http://user42.tuxfamily.org/math-planepath/index.html
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/>.
To install Math::PlanePath, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Math::PlanePath
CPAN shell
perl -MCPAN -e shell install Math::PlanePath
For more information on module installation, please visit the detailed CPAN module installation guide.