1Math::PlanePath::KochSqUusaerrefCloanktersi(b3u)ted PerlMaDtohc:u:mPelnatnaetPiaotnh::KochSquareflakes(3)
2
3
4

NAME

6       Math::PlanePath::KochSquareflakes -- four-sided Koch snowflakes
7

SYNOPSIS

9        use Math::PlanePath::KochSquareflakes;
10        my $path = Math::PlanePath::KochSquareflakes->new (inward => 0);
11        my ($x, $y) = $path->n_to_xy (123);
12

DESCRIPTION

14       This is the Koch curve shape arranged as four-sided concentric
15       snowflakes.
16
17                                         61                                10
18                                        /  \
19                                   63-62    60-59                           9
20                                    |           |
21                          67       64          58       55                  8
22                         /  \     /              \     /  \
23                    69-68    66-65                57-56    54-53            7
24                     |                                         |
25                    70                                        52            6
26                   /                                            \
27                 71                                              51         5
28                   \                                            /
29                    72                                        50            4
30                     |                                         |
31                    73                   15                   49            3
32                   /                    /  \                    \
33              75-74                17-16    14-13                48-47      2
34               |                    |           |                    |
35              76                   18          12                   46      1
36             /                    /     4---3    \                    \
37           77                   19        . |     11                   45  Y=0
38             \                    \     1---2    /                    /
39              78                   20          10                   44     -1
40               |                                |                    |
41              79-80                 5--6     8--9                42-43     -2
42                   \                    \  /                    /
43                    81                    7                   41           -3
44                     |                                         |
45                    82                                        40           -4
46                   /                                            \
47                 83                                              39        -5
48                   \                                            /
49                    84                                        38           -6
50                                                               |
51                    21-22    24-25                33-34    36-37           -7
52                         \  /     \              /     \  /
53                          23       26          32       35                 -8
54                                    |           |
55                                   27-28    30-31                          -9
56                                        \  /
57                                         29                               -10
58
59                                          ^
60              -9 -8 -7 -6 -5 -4 -3 -2 -1 X=0 1  2  3  4  5  6  7  8  9 10
61
62       The innermost square N=1 to N=4 is the initial figure.  Its sides
63       expand as the Koch curve pattern in subsequent rings.  The initial
64       figure is on X=+/-0.5,Y=+/-0.5 fractions.  The points after that are
65       integer X,Y.
66

Inward

68       The "inward=>1" option can direct the sides inward.  The shape and
69       lengths etc are the same.  The angles and sizes mean there's no
70       overlaps.
71
72           69-68    66-65                57-56    54-53     7
73            |   \  /     \              /     \  /    |
74           70    67       64          58       55    52     6
75             \             |           |            /
76              71          63-62    60-59          51        5
77             /                 \  /                 \
78           72                   61                   50     4
79            |                                         |
80           73                                        49     3
81             \                                      /
82              74-75       17-16    14-13       47-48        2
83                  |        |   \  /    |        |
84                 76       18    15    12       46           1
85                   \        \  4--3  /        /
86                    77       19   |11       45          <- Y=0
87                   /        /  1--2  \        \
88                 78       20     7    10       44          -1
89                  |            /  \    |        |
90              80-79        5--6     8--9       43-42       -2
91             /                                      \
92           81                                        41    -3
93            |                                         |
94           82                   29                   40    -4
95             \                 /  \                 /
96              83          27-28    30-31          39       -5
97             /             |           |            \
98           84    23       26          32       35    38    -6
99                /  \     /              \     /  \    |
100           21-22    24-25                33-34    36-37    -7
101
102                                 ^
103           -7 -6 -5 -4 -3 -2 -1 X=0 1  2  3  4  5  6  7
104
105   Level Ranges
106       Counting the innermost N=1 to N=4 square as level 0, a given level has
107
108           looplen = 4*4^level
109
110       many points.  The start of a level is N=1 plus the preceding loop
111       lengths so
112
113           Nstart = 1 + 4*[ 1 + 4 + 4^2 + ... + 4^(level-1) ]
114                  = 1 + 4*(4^level - 1)/3
115                  = (4^(level+1) - 1)/3
116
117       and the end of a level similarly the total loop lengths, or simply one
118       less than the next Nstart,
119
120           Nend = 4 * [ 1 + ... + 4^level ]
121                = (4^(level+2) - 4) / 3
122
123                = Nstart(level+1) - 1
124
125       For example,
126
127           level  Nstart   Nend                       (A002450,A080674)
128             0       1       4
129             1       5      20
130             2      21      84
131             3      85     340
132
133       The Xstart,Ystart position of the Nstart corner is a Lucas sequence,
134
135           Xstart(0) = -0.5
136           Xstart(1) = -2
137           Xstart(2) = 4*Xstart(1) - 2*Xstart(0) = -7
138           Xstart(3) = 4*Xstart(2) - 2*Xstart(1) = -24
139           ...
140           Xstart(level+1) = 4*Xstart(level) - 2*Xstart(level-1)
141
142           0.5, 2, 7, 24, 82, 280, 956, 3264, ...             (A003480)
143
144       This recurrence occurs because the replications are 4 wide when
145       horizontal but 3 wide when diagonal.
146

FUNCTIONS

148       See "FUNCTIONS" in Math::PlanePath for behaviour common to all path
149       classes.
150
151       "$path = Math::PlanePath::KochSquareflakes->new ()"
152       "$path = Math::PlanePath::KochSquareflakes->new (inward => $bool)"
153           Create and return a new path object.
154
155   Level Methods
156       "($n_lo, $n_hi) = $path->level_to_n_range($level)"
157           Return per "Level Ranges" above,
158
159               (  (4**$level - 1)/3,
160                4*(4**$level - 1)/3 )
161

OEIS

163       Entries in Sloane's Online Encyclopedia of Integer Sequences related to
164       this path include
165
166           <http://oeis.org/A003480> (etc)
167
168           A003480   -X and -Y coordinate first point of each ring
169                     likewise A020727
170           A007052   X,Y coordinate of axis crossing,
171                     and also maximum height of a side
172           A072261   N on Y negative axis (half way along first side)
173           A206374   N on South-East diagonal (end of first side)
174
175           Also:
176             A332204   X coordinate across one side
177             A332205   Y coordinate across one side
178

SEE ALSO

180       Math::PlanePath, Math::PlanePath::KochSnowflakes
181

HOME PAGE

183       <http://user42.tuxfamily.org/math-planepath/index.html>
184

LICENSE

186       Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020
187       Kevin Ryde
188
189       Math-PlanePath is free software; you can redistribute it and/or modify
190       it under the terms of the GNU General Public License as published by
191       the Free Software Foundation; either version 3, or (at your option) any
192       later version.
193
194       Math-PlanePath is distributed in the hope that it will be useful, but
195       WITHOUT ANY WARRANTY; without even the implied warranty of
196       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
197       General Public License for more details.
198
199       You should have received a copy of the GNU General Public License along
200       with Math-PlanePath.  If not, see <http://www.gnu.org/licenses/>.
201
202
203
204perl v5.38.0                      2023-07-2M0ath::PlanePath::KochSquareflakes(3)
Impressum