1Math::PlanePath::TriangUlseeSrpiCroanltSrkiebwuetde(d3M)Paetrhl::DPolcaunmeePnattaht:i:oTnriangleSpiralSkewed(3)
2
3
4

NAME

6       Math::PlanePath::TriangleSpiralSkewed -- integer points drawn around a
7       skewed equilateral triangle
8

SYNOPSIS

10        use Math::PlanePath::TriangleSpiralSkewed;
11        my $path = Math::PlanePath::TriangleSpiralSkewed->new;
12        my ($x, $y) = $path->n_to_xy (123);
13

DESCRIPTION

15       This path makes an spiral shaped as an equilateral triangle (each side
16       the same length), but skewed to the left to fit on a square grid,
17
18           16                              4
19            |\
20           17 15                           3
21            |   \
22           18  4 14                        2
23            |  |\  \
24           19  5  3 13                     1
25            |  |   \  \
26           20  6  1--2 12 ...         <- Y=0
27            |  |         \  \
28           21  7--8--9-10-11 30           -1
29            |                  \
30           22-23-24-25-26-27-28-29        -2
31
32                  ^
33           -2 -1 X=0 1  2  3  4  5
34
35       The properties are the same as the spread-out "TriangleSpiral".  The
36       triangle numbers fall on straight lines as they do in the
37       "TriangleSpiral" but the skew means the top corner goes up at an angle
38       to the vertical and the left and right downwards are different angles
39       plotted (but are symmetric by N count).
40
41   Skew Right
42       Option "skew => 'right'" directs the skew towards the right, giving
43
44             4                  16      skew="right"
45                               / |
46             3               17 15
47                            /    |
48             2            18  4 14
49                         /  / |  |
50             1        ...  5  3 13
51                         /    |  |
52           Y=0 ->       6  1--2 12
53                      /          |
54            -1       7--8--9-10-11
55
56                           ^
57                    -2 -1 X=0 1  2
58
59       This is a shear "X -> X+Y" of the default skew="left" shown above.  The
60       coordinates are related by
61
62           Xright = Xleft + Yleft         Xleft = Xright - Yright
63           Yright = Yleft                 Yleft = Yright
64
65   Skew Up
66             2       16-15-14-13-12-11      skew="up"
67                      |            /
68             1       17  4--3--2 10
69                      |  |   /  /
70           Y=0 ->    18  5  1  9
71                      |  |   /
72            -1      ...  6  8
73                         |/
74            -2           7
75
76                           ^
77                    -2 -1 X=0 1  2
78
79       This is a shear "Y -> X+Y" of the default skew="left" shown above.  The
80       coordinates are related by
81
82           Xup = Xleft                 Xleft = Xup
83           Yup = Yleft + Xleft         Yleft = Yup - Xup
84
85   Skew Down
86             2          ..-18-17-16       skew="down"
87                                  |
88             1        7--6--5--4 15
89                       \       |  |
90           Y=0 ->        8  1  3 14
91                          \  \ |  |
92            -1              9  2 13
93                             \    |
94            -2                10 12
95                                \ |
96                                 11
97
98                            ^
99                     -2 -1 X=0 1  2
100
101       This is a rotate by -90 degrees of the skew="up" above.  The
102       coordinates are related
103
104           Xdown = Yup          Xup = - Ydown
105           Ydown = - Xup        Yup = Xdown
106
107       Or related to the default skew="left" by
108
109           Xdown = Yleft + Xleft        Xleft = - Ydown
110           Ydown = - Xleft              Yleft = Xdown + Ydown
111
112   N Start
113       The default is to number points starting N=1 as shown above.  An
114       optional "n_start" can give a different start, with the same shape etc.
115       For example to start at 0,
116
117           15        n_start => 0
118            |\
119           16 14
120            |   \
121           17  3 13 ...
122            |  |\  \  \
123           18  4  2 12 31
124            |  |   \  \  \
125           19  5  0--1 11 30
126            |  |         \  \
127           20  6--7--8--9-10 29
128            |                  \
129           21-22-23-24-25-26-27-28
130
131       With this adjustment for example the X axis N=0,1,11,30,etc is
132       (9X-7)*X/2, the hendecagonal numbers (11-gonals).  And South-East
133       N=0,8,25,etc is the hendecagonals of the second kind, (9Y-7)*Y/2 with Y
134       negative.
135

FUNCTIONS

137       See "FUNCTIONS" in Math::PlanePath for behaviour common to all path
138       classes.
139
140       "$path = Math::PlanePath::TriangleSpiralSkewed->new ()"
141       "$path = Math::PlanePath::TriangleSpiralSkewed->new (skew => $str,
142       n_start => $n)"
143           Create and return a new skewed triangle spiral object.  The "skew"
144           parameter can be
145
146               "left"    (the default)
147               "right"
148               "up"
149               "down"
150
151       "$n = $path->xy_to_n ($x,$y)"
152           Return the point number for coordinates "$x,$y".  $x and $y are
153           each rounded to the nearest integer, which has the effect of
154           treating each N in the path as centred in a square of side 1, so
155           the entire plane is covered.
156

FORMULAS

158   Rectangle to N Range
159       Within each row there's a minimum N and the N values then increase
160       monotonically away from that minimum point.  Likewise in each column.
161       This means in a rectangle the maximum N is at one of the four corners
162       of the rectangle.
163
164                     |
165           x1,y2 M---|----M x2,y2        maximum N at one of
166                 |   |    |              the four corners
167              -------O---------          of the rectangle
168                 |   |    |
169                 |   |    |
170           x1,y1 M---|----M x1,y1
171                     |
172

OEIS

174       Entries in Sloane's Online Encyclopedia of Integer Sequences related to
175       this path include
176
177           <http://oeis.org/A117625> (etc)
178
179           n_start=1, skew="left" (the defaults)
180             A204439     abs(dX)
181             A204437     abs(dY)
182             A010054     turn 1=left,0=straight, extra initial 1
183
184             A117625     N on X axis
185             A064226     N on Y axis, but without initial value=1
186             A006137     N on X negative
187             A064225     N on Y negative
188             A081589     N on X=Y leading diagonal
189             A038764     N on X=Y negative South-West diagonal
190             A081267     N on X=-Y negative South-East diagonal
191             A060544     N on ESE slope dX=+2,dY=-1
192             A081272     N on SSE slope dX=+1,dY=-2
193
194             A217010     permutation N values of points in SquareSpiral order
195             A217291      inverse
196             A214230     sum of 8 surrounding N
197             A214231     sum of 4 surrounding N
198
199           n_start=0
200             A051682     N on X axis (11-gonal numbers)
201             A081268     N on X=1 vertical (next to Y axis)
202             A062708     N on Y axis
203             A062725     N on Y negative axis
204             A081275     N on X=Y+1 North-East diagonal
205             A062728     N on South-East diagonal (11-gonal second kind)
206             A081266     N on X=Y negative South-West diagonal
207             A081270     N on X=1-Y North-West diagonal, starting N=3
208             A081271     N on dX=-1,dY=2 NNW slope up from N=1 at X=1,Y=0
209
210           n_start=-1
211             A023531     turn 1=left,0=straight, being 1 at N=k*(k+3)/2
212             A023532     turn 1=straight,0=left
213
214           n_start=1, skew="right"
215             A204435     abs(dX)
216             A204437     abs(dY)
217             A217011     permutation N values of points in SquareSpiral order
218                           but with 90-degree rotation
219             A217292     inverse
220             A214251     sum of 8 surrounding N
221
222           n_start=1, skew="up"
223             A204439     abs(dX)
224             A204435     abs(dY)
225             A217012     permutation N values of points in SquareSpiral order
226                           but with 90-degree rotation
227             A217293     inverse
228             A214252     sum of 8 surrounding N
229
230           n_start=1, skew="down"
231             A204435     abs(dX)
232             A204439     abs(dY)
233
234       The square spiral order in A217011,A217012 and their inverses has first
235       step at 90-degrees to the first step of the triangle spiral, hence the
236       rotation by 90 degrees when relating to the "SquareSpiral" path.
237       A217010 on the other hand has no such rotation since it reckons the
238       square and triangle spirals starting in the same direction.
239

SEE ALSO

241       Math::PlanePath, Math::PlanePath::TriangleSpiral,
242       Math::PlanePath::PyramidSpiral, Math::PlanePath::SquareSpiral
243

HOME PAGE

245       <http://user42.tuxfamily.org/math-planepath/index.html>
246

LICENSE

248       Copyright 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019,
249       2020 Kevin Ryde
250
251       This file is part of Math-PlanePath.
252
253       Math-PlanePath is free software; you can redistribute it and/or modify
254       it under the terms of the GNU General Public License as published by
255       the Free Software Foundation; either version 3, or (at your option) any
256       later version.
257
258       Math-PlanePath is distributed in the hope that it will be useful, but
259       WITHOUT ANY WARRANTY; without even the implied warranty of
260       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
261       General Public License for more details.
262
263       You should have received a copy of the GNU General Public License along
264       with Math-PlanePath.  If not, see <http://www.gnu.org/licenses/>.
265
266
267
268perl v5.34.0                      2022-M0a1t-h2:1:PlanePath::TriangleSpiralSkewed(3)
Impressum