NAME
Math::PlanePath::SquareReplicate -- replicating squares
SYNOPSIS
use Math::PlanePath::SquareReplicate;
my $path = Math::PlanePath::SquareReplicate->new;
my ($x, $y) = $path->n_to_xy (123);
DESCRIPTION
This path is a self-similar replicating square,
40--39--38 31--30--29 22--21--20 4
| | | | | |
41 36--37 32 27--28 23 18--19 3
| | |
42--43--44 33--34--35 24--25--26 2
49--48--47 4-- 3-- 2 13--12--11 1
| | | | | |
50 45--46 5 0-- 1 14 9--10 <- Y=0
| | |
51--52--53 6-- 7-- 8 15--16--17 -1
58--57--56 67--66--65 76--75--74 -2
| | | | | |
59 54--55 68 63--64 77 72--73 -3
| | |
60--61--62 69--70--71 78--79--80 -4
^
-4 -3 -2 -1 X=0 1 2 3 4
The base shape is the initial N=0 to N=8 section,
4 3 2
5 0 1
6 7 8
It then repeats with 3x3 blocks arranged in the same pattern, then 9x9 blocks, etc.
36 --- 27 --- 18
| |
| |
45 0 --- 9
|
|
54 --- 63 --- 72
Level Ranges
A given replication extends to
Nlevel = 9^level - 1
- (3^level - 1) <= X <= (3^level - 1)
- (3^level - 1) <= Y <= (3^level - 1)
Complex Base
This pattern corresponds to expressing a complex integer X+i*Y in base b=3,
X+Yi = a[n]*b^n + ... + a[2]*b^2 + a[1]*b + a[0]
using complex digits a[i] encoded in N in integer base 9,
a[i] digit N digit
---------- -------
0 0
1 1
i+1 2
i 3
i-1 4
-1 5
-i-1 6
-i 7
-i+1 8
FUNCTIONS
See "FUNCTIONS" in Math::PlanePath for the behaviour common to all path classes.
$path = Math::PlanePath::SquareReplicate->new ()
-
Create and return a new path object.
($x,$y) = $path->n_to_xy ($n)
-
Return the X,Y coordinates of point number
$n
on the path. Points begin at 0 and if$n < 0
then the return is an empty list.
SEE ALSO
Math::PlanePath, Math::PlanePath::PeanoCurve Math::PlanePath::QuintetReplicate
HOME PAGE
http://user42.tuxfamily.org/math-planepath/index.html
LICENSE
Copyright 2011 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/>.