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