1Math::PlanePath::CubicBUasseer(3C)ontributed Perl DocumeMnattaht:i:oPnlanePath::CubicBase(3)
2
3
4

NAME

6       Math::PlanePath::CubicBase -- replications in three directions
7

SYNOPSIS

9        use Math::PlanePath::CubicBase;
10        my $path = Math::PlanePath::CubicBase->new (radix => 4);
11        my ($x, $y) = $path->n_to_xy (123);
12

DESCRIPTION

14       This is a pattern of replications in three directions 0, 120 and 240
15       degrees.
16
17                              18    19    26    27                      5
18                                 16    17    24    25                   4
19                        22    23    30    31                            3
20                           20    21    28    29                         2
21                  50    51    58    59     2     3    10    11          1
22                     48    49    56    57     0     1     8     9   <- Y=0
23            54    55    62    63     6     7    14    15               -1
24               52    53    60    61     4     5    12    13            -2
25                              34    35    42    43                     -3
26                                 32    33    40    41                  -4
27                        38    39    46    47                           -5
28                           36    37    44    45                        -6
29
30                                              ^
31           -11-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 X=0 1  2  3  4  5  6
32
33       The points are on a triangular grid by using every second integer X,Y,
34       as per "Triangular Lattice" in Math::PlanePath.  All points on that
35       triangular grid are visited.
36
37       The initial N=0,N=1 is replicated at +120 degrees.  Then that trapezoid
38       at +240 degrees
39
40           +-----------+                       +-----------+
41            \  2     3  \                       \  2     3  \
42             +-----------+                       \           \
43               \  0     1  \                       \  0     1  \
44                +-----------+             ---------  -----------+
45                                          \  6     7  \
46             replicate +120deg              \          \    rep +240deg
47                                             \  4     5 \
48                                              +----------+
49
50       Then that bow-tie N=0to7 is replicated at 0 degrees again.  Each
51       replication is 1/3 of the circle around, 0, 120, 240 degrees repeating.
52       The relative layout within a replication is unchanged.
53
54                             -----------------------
55                             \ 18    19    26    27 \
56                              \                       \
57                               \  16    17    24    25 \
58                      ----------              ----------
59                       \ 22    23    30    31 \
60                         \                      \
61                          \ 20    21    28    29  \
62                 --------- ------------ +----------- -----------
63                 \ 50    51    58    59  \  2     3  \ 10    11 \
64                   \                      +-----------+           \
65                    \ 48    49    56    57  \  0     1  \  8     9 \
66           ----------              --------- +-----------  ---------+
67           \ 54    55    62    63  \  6     7  \ 14    15  \
68            \                        \          \            \
69              \ 52    53    60    61  \  4     5 \  12    13  \
70               --------------          +----------+------------
71                             \ 34    35    42    43 \
72                              \                       \
73                               \  32    33    40    41 \
74                       ---------+            -----------
75                       \ 38    39    46    47 \
76                        \                       \
77                          \ 36    37    44    45 \
78                           -----------------------
79
80       The radial distance doubles on every second replication, so N=1 and N=2
81       are at 1 unit from the origin, then N=4 and N=8 at 2 units, then N=16
82       and N=32 at 4 units.  N=64 is not shown but is then at 8 units away
83       (X=8,Y=0).
84
85       This is similar to the "ImaginaryBase", but where that path repeats in
86       4 directions based on i=squareroot(-1), here it's 3 directions based on
87       w=cuberoot(1) = -1/2+i*sqrt(3)/2.
88
89   Radix
90       The "radix" parameter controls the "r" used to break N into X,Y.  For
91       example radix 4 gives 4x4 blocks, with r-1 replications of the
92       preceding level at each stage.
93
94              3         radix => 4              12    13    14    15
95              2                                     8     9    10    11
96              1                                        4     5     6     7
97            Y=0 ->                                        0     1     2     3
98             -1                     28    29    30    31
99             -2                        24    25    26    27
100             -3                           20    21    22    23
101             -4                              16    17    18    19
102             -5         44    45    46    47
103             ...           40    41    42    43
104                              36    37    38    39
105                                 32    33    34    35
106            60    61    62    63
107               56    57    58    59
108                  52    53    54    55
109                     48    49    50    51
110
111                                                          ^
112           -15-14-13-12-11-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 X=0 1  2  3  4  5  6
113
114       Notice the parts always replicate away from the origin, so the block
115       N=16 to N=31 is near the origin at X=-4, then N=32,48,64 are further
116       away.
117
118       In this layout the replications still mesh together perfectly and all
119       points on the triangular grid are visited.
120

FUNCTIONS

122       See "FUNCTIONS" in Math::PlanePath for behaviour common to all path
123       classes.
124
125       "$path = Math::PlanePath::CubicBase->new ()"
126       "$path = Math::PlanePath::CubicBase->new (radix => $r)"
127           Create and return a new path object.
128
129       "($x,$y) = $path->n_to_xy ($n)"
130           Return the X,Y coordinates of point number $n on the path.  Points
131           begin at 0 and if "$n < 0" then the return is an empty list.
132
133   Level Methods
134       "($n_lo, $n_hi) = $path->level_to_n_range($level)"
135           Return "(0, $radix**$level - 1)".
136

SEE ALSO

138       Math::PlanePath, Math::PlanePath::ImaginaryBase,
139       Math::PlanePath::ImaginaryHalf
140

HOME PAGE

142       <http://user42.tuxfamily.org/math-planepath/index.html>
143

LICENSE

145       Copyright 2012, 2013, 2014, 2015, 2016, 2017 Kevin Ryde
146
147       This file is part of Math-PlanePath.
148
149       Math-PlanePath is free software; you can redistribute it and/or modify
150       it under the terms of the GNU General Public License as published by
151       the Free Software Foundation; either version 3, or (at your option) any
152       later version.
153
154       Math-PlanePath is distributed in the hope that it will be useful, but
155       WITHOUT ANY WARRANTY; without even the implied warranty of
156       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
157       General Public License for more details.
158
159       You should have received a copy of the GNU General Public License along
160       with Math-PlanePath.  If not, see <http://www.gnu.org/licenses/>.
161
162
163
164perl v5.28.0                      2017-12-03     Math::PlanePath::CubicBase(3)
Impressum