Scroll to navigation

Math::PlanePath::QuintetReplicate(3pm) User Contributed Perl Documentation Math::PlanePath::QuintetReplicate(3pm)
 

NAME

Math::PlanePath::QuintetReplicate -- self-similar "+" tiling

SYNOPSIS

 use Math::PlanePath::QuintetReplicate;
 my $path = Math::PlanePath::QuintetReplicate->new;
 my ($x, $y) = $path->n_to_xy (123);

DESCRIPTION

This is a self-similar tiling of the plane with "+" shapes. It's the same kind of tiling as the "QuintetCurve" (and "QuintetCentres"), but with the middle square of the "+" shape centred on the origin.
            12                         3
        13  10  11       7             2
            14   2   8   5   6         1
        17   3   0   1   9         <- Y=0
    18  15  16   4  22                -1
        19      23  20  21            -2
                    24                -3
                 ^
    -4 -3 -2 -1 X=0  1  2  3  4
The base pattern is a "+" shape
        +---+
        | 2 |
    +---+---+---+
    | 3 | 0 | 1 |
    +---+---+---+
        | 4 |
        +---+
which is then replicated
         +--+
         |  |
      +--+  +--+  +--+
      |   10   |  |  |
      +--+  +--+--+  +--+
         |  |  |   5    |
      +--+--+  +--+  +--+
      |  |   0    |  |
   +--+  +--+  +--+--+
   |   15   |  |  |
   +--+  +--+--+  +--+
      |  |  |   20   |
      +--+  +--+  +--+
               |  |
               +--+
The effect is to tile the whole plane. Notice the centres 0,5,10,15,20 are the same "+" shape but rotated around by an angle atan(1/2)=26.565 degrees, as noted below.

Complex Base

This tiling corresponds to expressing a complex integer X+i*Y in base b=2+i
    X+Yi = a[n]*b^n + ... + a[2]*b^2 + a[1]*b + a[0]
where each digit a[i] is
    a[i] digit     N digit
    ----------     -------
        0             0
        1             1
        i             2
       -1             3
       -i             4
The base b=2+i is at an angle atan(1/2) = 26.56 degrees as seen at N=5 above. Successive powers b^2, b^3, b^4 etc at N=5^level rotate around by that much each time.
    Npow = 5^level
    angle = level*26.56 degrees
    radius = sqrt(5) ^ level

FUNCTIONS

See "FUNCTIONS" in Math::PlanePath for behaviour common to all path classes.
"$path = Math::PlanePath::QuintetReplicate->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.

Level Methods

"($n_lo, $n_hi) = $path->level_to_n_range($level)"
Return "(0, 5**$level - 1)".

SEE ALSO

Math::PlanePath, Math::PlanePath::QuintetCurve, Math::PlanePath::ComplexMinus, Math::PlanePath::GosperReplicate

HOME PAGE

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

LICENSE

Copyright 2011, 2012, 2013, 2014 Kevin Ryde
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/>.
2014-08-26 perl v5.20.1