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/>.