Math::PlanePath::QuintetReplicate -- self-similar "+" tiling
use Math::PlanePath::QuintetReplicate; my $path = Math::PlanePath::QuintetReplicate->new; my ($x, $y) = $path->n_to_xy (123);
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.
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
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.
($n_lo, $n_hi) = $path->level_to_n_range($level)
Return (0, 5**$level - 1)
.
Math::PlanePath, Math::PlanePath::QuintetCurve, Math::PlanePath::ComplexMinus, Math::PlanePath::GosperReplicate
http://user42.tuxfamily.org/math-planepath/index.html
Copyright 2011, 2012, 2013, 2014, 2015 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/>.