Math::...icBase(3pm)
πΈ NAME πΈ
Math::PlanePath::CubicBase β replications in three directions π«
(you're reading Math::...icBase(3pm) from the User Contributed Perl Documentation, bestie π)
β¨ SYNOPSIS β¨
use Math::PlanePath::CubicBase;
my $path = Math::PlanePath::CubicBase->new (radix => 4);
my ($x, $y) = $path->n_to_xy (123);
π¦ DESCRIPTION π¦
okay so picture this: it's a pattern of replications going off in three directions β 0, 120 and 240 degrees. cute, right? πΊ
18 19 26 27 5
16 17 24 25 4
22 23 30 31 3
20 21 28 29 2
50 51 58 59 2 3 10 11 1
48 49 56 57 0 1 8 9 <- Y=0
54 55 62 63 6 7 14 15 -1
52 53 60 61 4 5 12 13 -2
34 35 42 43 -3
32 33 40 41 -4
38 39 46 47 -5
36 37 44 45 -6
^
-11-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 X=0 1 2 3 4 5 6
so the points live on a triangular grid β you get there by using every second integer X,Y, exactly like it says in "Triangular Lattice" in Math::PlanePath. and literally every single point on that triangular grid gets visited. no skipping, no gaps, we love a thorough queen π
The initial N=0,N=1 gets replicated at +120 degrees. Then that trapezoid gets replicated at +240 degrees:
+-----------+ +-----------+
\ 2 3 \ \ 2 3 \
+-----------+ \ \
\ 0 1 \ \ 0 1 \
+-----------+ --------- -----------+
\ 6 7 \
replicate +120deg \ \ rep +240deg
\ 4 5 \
+----------+
then that whole bow-tie N=0to7 gets replicated at 0 degrees again π Each replication is 1/3 of the circle around β 0, 120, 240 degrees, repeating forever. And the relative layout inside a replication? Unchanged. iconic behavior honestly.
-----------------------
\ 18 19 26 27 \
\ \
\ 16 17 24 25 \
---------- ----------
\ 22 23 30 31 \
\ \
\ 20 21 28 29 \
--------- ------------ +----------- -----------
\ 50 51 58 59 \ 2 3 \ 10 11 \
\ +-----------+ \
\ 48 49 56 57 \ 0 1 \ 8 9 \
---------- --------- +----------- ---------+
\ 54 55 62 63 \ 6 7 \ 14 15 \
\ \ \ \
\ 52 53 60 61 \ 4 5 \ 12 13 \
-------------- +----------+------------
\ 34 35 42 43 \
\ \
\ 32 33 40 41 \
---------+ -----------
\ 38 39 46 47 \
\ \
\ 36 37 44 45 \
-----------------------
The radial distance doubles on every second replication β so N=1 and N=2 sit 1 unit from the origin, then N=4 and N=8 are at 2 units, then N=16 and N=32 are at 4 units. N=64 isn't drawn here but bestie it's at 8 units away, i.e. X=8,Y=0. math is mathing π
This is lowkey similar to the "ImaginaryBase", except that path repeats in 4 directions based on i=squareroot(-1), whereas this one does 3 directions based on w=cuberoot(1) = -1/2+i*sqrt(3)/2. different vibes, same energy π
π Radix π
The "radix" parameter controls the "r" used to break N into X,Y. For example radix 4 gives 4x4 blocks, with r-1 replications of the preceding level at each stage. look at her go:
3 radix => 4 12 13 14 15
2 8 9 10 11
1 4 5 6 7
Y=0 -> 0 1 2 3
-1 28 29 30 31
-2 24 25 26 27
-3 20 21 22 23
-4 16 17 18 19
-5 44 45 46 47
... 40 41 42 43
36 37 38 39
32 33 34 35
60 61 62 63
56 57 58 59
52 53 54 55
48 49 50 51
^
-15-14-13-12-11-10 -9 -8 -7 -6 -5 -4 -3 -2 -1 X=0 1 2 3 4 5 6
notice how the parts always replicate away from the origin β so the block N=16 to N=31 is near the origin at X=-4, then N=32,48,64 are further away. she's expanding her horizons, periodt β¨
In this layout the replications still mesh together perfectly and all points on the triangular grid are visited. no overlap, no drama, just vibes π«Ά
π FUNCTIONS π
See "FUNCTIONS" in Math::PlanePath for behaviour common to all path classes. (shared lore, iykyk π)
$path = Math::PlanePath::CubicBase->new ()$path = Math::PlanePath::CubicBase->new (radix => $r)β Create and return a new path object. brand new baby path, obsessed π($x,$y) = $path->n_to_xy ($n)β Return the X,Y coordinates of point number$non the path. Points begin at 0, and if"$n < 0"then the return is an empty list. so, negative N? you get nothing. empty. void. ghosted π
β Level Methods β
($n_lo, $n_hi) = $path->level_to_n_range($level)β Return(0, $radix**$level - 1). that's it, that's the whole thing, slay π
π₯ SEE ALSO π₯
- Math::PlanePath
- Math::PlanePath::ImaginaryBase
- Math::PlanePath::ImaginaryHalf
π HOME PAGE π
<http://user42.tuxfamily.org/math-planepath/index.html>
π LICENSE π
Copyright 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 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/>.
fr fr read the license, it's giving legally binding bestie energy π«Ά
and that's the whole page babes β¨ this one's perl v5.32.0, dated 2021-01-23, and it lives at Math::...icBase(3pm) β stay cubic, stay iconic, mwah ππ¦
π¦ where this page comes from
- debian bookworm: libmath-planepath-perl 129-1 Β· GPL-3.0-or-later
- debian trixie: libmath-planepath-perl 129-1 Β· GPL-3.0-or-later
- ubuntu jammy: libmath-planepath-perl 129-1 Β· GPL-3.0-or-later
- ubuntu noble: libmath-planepath-perl 129-1 Β· GPL-3.0-or-later
- ubuntu resolute: libmath-planepath-perl 129-1 Β· GPL-3.0-or-later
- ubuntu stonking: libmath-planepath-perl 129-1 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms