NAME
Math::PlanePath::AnvilSpiral -- integer points around an "anvil" shape
SYNOPSIS
use Math::PlanePath::AnvilSpiral;
my $path = Math::PlanePath::AnvilSpiral->new;
my ($x, $y) = $path->n_to_xy (123);
DESCRIPTION
This path makes a spiral around an anvil style shape,
...-78-77-76-75-74 4
/
49-48-47-46-45-44-43-42-41-40-39-38 73 3
\ / /
50 21-20-19-18-17-16-15-14 37 72 2
\ \ / / /
51 22 5--4--3--2 13 36 71 1
\ \ \ / / / /
52 23 6 1 12 35 70 <- Y=0
/ / / \ \ \
53 24 7--8--9-10-11 34 69 -1
/ / \ \
54 25-26-27-28-29-30-31-32-33 68 -2
/ \
55-56-57-58-59-60-61-62-63-64-65-66-67 -3
^
-6 -5 -4 -3 -2 -1 X=0 1 2 3 4 5 6 7
The pentagonal numbers 1,5,12,22,etc, P(k) = (3k-1)*k/2 fall alternately on the X axis X>0, and on the Y=1 horizontal X<0.
Those pentagonals are always composites, from the factorization shown, and as noted in "Step 3 Pentagonals" in Math::PlanePath::PyramidRows, the immediately preceding P(k)-1 and P(k)-2 are also composites. So plotting the primes on the spiral has a 3-high horizontal blank line at Y=0,-1,-2 for positive X, and Y=1,2,3 for negative X (after the first few values).
Each loop around the spiral is 12 longer than the preceding. This is 4* more than the step=3 PyramidRows
so straight lines on a PyramidRows
like these pentagonals are also straight lines here, but split into two parts.
The outward diagonal excursions are similar to the OctagramSpiral
, but there's just 4 of them here where the OctagramSpiral
has 8. This is reflected in the loop step. The basic SquareSpiral
is step 8, but by taking 4 excursions here increases that to 12, and in the OctagramSpiral
8 excursions adds 8 to make step 16.
Wider
An optional wider
parameter makes the path wider by starting with a horizontal section of given width. For example
$path = Math::PlanePath::SquareSpiral->new (wider => 3);
gives
33-32-31-30-29-28-27-26-25-24-23 ... 2
\ / /
34 11-10--9--8--7--6--5 22 51 1
\ \ / / /
35 12 1--2--3--4 21 50 <- Y=0
/ / \ \
36 13-14-15-16-17-18-19-20 49 -1
/ \
37-38-39-40-41-42-43-44-45-46-47-48 -2
^
-6 -5 -4 -3 -2 -1 X=0 1 2 3 4 5
The starting point 1 is shifted to the left by ceil(wider/2) places to keep the spiral centred on the origin X=0,Y=0. This is the same starting offset as the SquareSpiral
wider
.
Widening doesn't change the nature of the straight lines which arise, it just rotates them around. Each loop is still 12 longer than the previous, since the widening is essentially a constant amount in each loop.
N Start
The default is to number points starting N=1 as shown above. An optional n_start
can give a different start with the same shape. For example to start at 0,
n_start => 0
20-19-18-17-16-15-14-13 ...
\ / /
21 4--3--2--1 12 35
\ \ / / /
22 5 0 11 34
/ / \ \
23 6--7--8--9-10 33
/ \
24-25-26-27-28-29-30-31-32
The only effect is to push the N values around by a constant amount. It might help match coordinates with something else zero-based.
FUNCTIONS
See "FUNCTIONS" in Math::PlanePath for behaviour common to all path classes.
$path = Math::PlanePath::AnvilSpiral->new ()
$path = Math::PlanePath::AnvilSpiral->new (wider => $integer, n_start => $n)
-
Create and return a new anvil spiral object. An optional
wider
parameter widens the spiral path, it defaults to 0 which is no widening.
OEIS
Entries in Sloane's Online Encyclopedia of Integer Sequences related to this path include
http://oeis.org/A033581 (etc)
default wider=0, n_start=1
A033570 N on X axis, alternate pentagonals (2n+1)*(3n+1)
A126587 N on Y axis
A136392 N on Y negative (n=-Y+1)
A033568 N on X=Y diagonal, alternate second pents (2*n-1)*(3*n-1)
A085473 N on south-east diagonal
wider=0, n_start=0
A211014 N on X axis, 14-gonal numbers of the second kind
A139267 N on Y axis, 2*octagonal
A049452 N on X negative, alternate pentagonals
A033580 N on Y negative, 4*pentagonals
A051866 N on X=Y diagonal, 14-gonal numbers
A094159 N on north-west diagonal, 3*hexagonals
A049453 N on south-west diagonal, alternate second pentagonal
A195319 N on south-east diagonal, 3*second hexagonals
wider=1, n_start=0
A051866 N on X axis, 14-gonal numbers
A049453 N on Y negative, alternate second pentagonal
A033569 N on north-west diagonal
A085473 N on south-west diagonal
A080859 N on Y negative
A033570 N on south-east diagonal
alternate pentagonals (2n+1)*(3n+1)
wider=2, n_start=1
A033581 N on Y axis (6*n^2) except for initial N=2
SEE ALSO
Math::PlanePath, Math::PlanePath::SquareSpiral, Math::PlanePath::OctagramSpiral, Math::PlanePath::HexSpiral
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/>.