1Math::PlanePath::PyramiUdsSeprirCaoln(t3r)ibuted Perl DoMcautmhe:n:tPaltainoenPath::PyramidSpiral(3)
2
3
4
6 Math::PlanePath::PyramidSpiral -- integer points drawn around a pyramid
7
9 use Math::PlanePath::PyramidSpiral;
10 my $path = Math::PlanePath::PyramidSpiral->new;
11 my ($x, $y) = $path->n_to_xy (123);
12
14 This path makes a pyramid shaped spiral,
15
16 31 3
17 / \
18 32 13 30 2
19 / / \ \
20 33 14 3 12 29 1
21 / / / \ \ \
22 34 15 4 1--2 11 28 ... <- Y=0
23 / / / \ \ \
24 35 16 5--6--7--8--9-10 27 52 -1
25 / / \ \
26 36 17-18-19-20-21-22-23-24-25-26 51 -2
27 / \
28 37-38-39-40-41-42-43-44-45-46-47-48-49-50 -3
29
30 ^
31 -6 -5 -4 -3 -2 -1 X=0 1 2 3 4 5 6 7
32
33 The perfect squares 1,4,9,16 fall one before the bottom left corner of
34 each loop, and the pronic numbers 2,6,12,20,30,etc are the vertical
35 upwards from X=1,Y=0.
36
37 Square Spiral
38 This spiral goes around at the same rate as the "SquareSpiral". It's
39 as if two corners are cut off (like the "DiamondSpiral") and two others
40 extended (like the "OctagramSpiral"). The net effect is the same
41 looping rate but the points pushed around a bit.
42
43 Taking points up to a perfect square shows the similarity. The two
44 triangular cut-off corners marked by "."s are matched by the two
45 triangular extensions.
46
47 +--------------------+ 7x7 square
48 | . . . 31 . . .|
49 | . . 32 13 30 . .|
50 | . 33 14 3 12 29 .|
51 |34 15 4 1 2 11 28|
52 35|16 5 6 7 8 9 10|27
53 36 17|18 19 20 21 22 23 24|25 26
54 37 38 39|40 41 42 43 44 45 46|47 48 49
55 +--------------------+
56
57 N Start
58 The default is to number points starting N=1 as shown above. An
59 optional "n_start" can give a different start, with the same shape etc.
60 For example to start at 0,
61
62 12 n_start => 0
63 / \
64 13 2 11
65 / / \ \
66 14 3 0--1 10
67 / / \
68 15 4--5--6--7--8--9
69 /
70 16-17-18-19-20-21-22-...
71
73 See "FUNCTIONS" in Math::PlanePath for behaviour common to all path
74 classes.
75
76 "$path = Math::PlanePath::PyramidSpiral->new ()"
77 "$path = Math::PlanePath::PyramidSpiral->new (n_start => $n)"
78 Create and return a new pyramid spiral object.
79
80 "$n = $path->xy_to_n ($x,$y)"
81 Return the point number for coordinates "$x,$y". $x and $y are
82 each rounded to the nearest integer, which has the effect of
83 treating each N in the path as centred in a square of side 1, so
84 the entire plane is covered.
85
87 This path is in Sloane's Online Encyclopedia of Integer Sequences as
88
89 <http://oeis.org/A053615> (etc)
90
91 n_start=1 (the default)
92 A053615 abs(X), distance to next pronic, but starts n=0
93 A054552 N on X axis, 4n^2 - 3n + 1
94 A033951 N on South-East diagonal, 4n^2 + 3n + 1
95
96 A214250 sum N of eight surrounding cells
97
98 A217013 permutation N of points in SquareSpiral order
99 rotated +90 degrees
100 A217294 inverse
101
102 In the two permutations the pyramid spiral is conceived as starting to
103 the left and the square spiral starting upwards. The paths here start
104 in the same direction (both to the right), hence rotate 90 to adjust
105 the orientation.
106
107 n_start=0
108 A329116 X coordinate
109 A329972 Y coordinate
110 A053615 abs(X)
111 A339265 dX-dY increments (runs +1,-1)
112 A001107 N on X axis, decagonal numbers
113 A002939 N on Y axis
114 A033991 N on X negative axis
115 A002943 N on Y negative axis
116 A007742 N on diagonal South-West
117 A033954 N on diagonal South-East, decagonal second kind
118
119 n_start=2
120 A185669 N on diagonal South-East
121
123 Math::PlanePath, Math::PlanePath::SquareSpiral,
124 Math::PlanePath::PyramidRows, Math::PlanePath::TriangleSpiral,
125 Math::PlanePath::TriangleSpiralSkewed
126
128 <http://user42.tuxfamily.org/math-planepath/index.html>
129
131 Copyright 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019,
132 2020, 2021 Kevin Ryde
133
134 This file is part of Math-PlanePath.
135
136 Math-PlanePath is free software; you can redistribute it and/or modify
137 it under the terms of the GNU General Public License as published by
138 the Free Software Foundation; either version 3, or (at your option) any
139 later version.
140
141 Math-PlanePath is distributed in the hope that it will be useful, but
142 WITHOUT ANY WARRANTY; without even the implied warranty of
143 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
144 General Public License for more details.
145
146 You should have received a copy of the GNU General Public License along
147 with Math-PlanePath. If not, see <http://www.gnu.org/licenses/>.
148
149
150
151perl v5.36.0 2023-01-20 Math::PlanePath::PyramidSpiral(3)