Provided by: libmath-planepath-perl_113-1_all
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 The replication means that the values on the X axis are those using only digits 0,1,5 in base 9. Those to the right have a high 1 digit and those to the left a high 5 digit. These digits are the values in the initial N=0 to N=8 figure which fall on the X axis. Similarly on the Y axis digits 0,3,7 in base 9, or the leading diagonal X=Y 0,2,6 and opposite diagonal 0,4,8. The opposite diagonal digits 0,4,8 are 00,11,22 in base 3, so is all the values in base 3 with doubled digits aabbccdd, etc. 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 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::CornerReplicate, Math::PlanePath::LTiling, Math::PlanePath::GosperReplicate, Math::PlanePath::QuintetReplicate
HOME PAGE
<http://user42.tuxfamily.org/math-planepath/index.html>
LICENSE
Copyright 2011, 2012, 2013 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/>.