NAME

Math::PlanePath::WunderlichMeander -- 3x3 self-similar "R" shape

SYNOPSIS

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

DESCRIPTION

This is an integer version of the 3x3 self-similar meander by Walter Wunderlich,

  8     20--21--22  29--30--31  38--39--40
         |       |   |       |   |       |
  7     19  24--23  28  33--32  37  42--41
         |   |       |   |       |   |
  6     18  25--26--27  34--35--36  43--44
         |                               |
  5     17  14--13  56--55--54--53--52  45
         |   |   |   |               |   |
  4     16--15  12  57  60--61  50--51  46
                 |   |   |   |   |       |
  3      9--10--11  58--59  62  49--48--47
         |                   |
  2      8   5-- 4  65--64--63  74--75--76
         |   |   |   |           |       |
  1      7-- 6   3  66  69--70  73  78--77
                 |   |   |   |   |   |
Y=0->    0-- 1-- 2  67--68  71--72  79--80-...

        X=0  1   2   3   4   5   6   7   8

The base pattern is the N=0 to N=8 section. It works as a traversal from one corner of a 3x3 square to another along one side. The base figure goes up and it's used rotated by 180 and/or transposed to go across another side,

+----------------+----------------+---------------+
| ^              |              * | ^             |
| |              |  rotate 180  | | |   base      |
| |     8        |       5      | | |     4       |
| |   base       |              | | |             |
| *              |              v | *             |
+----------------+----------------+---------------+
| <------------* | <------------* | ^             |
|                |                | |             |
|       7        |       6        | |     3       |
|   rotate 180   |   rotate 180   | |   base      |
|  + transpose   |  + transpose   | *             |
+----------------+----------------+---------------+
|                |                | ^             |
|                |                | |             |
|       0        |       1        | |     2       |
|   transpose    |   transpose    | |   base      |
| *----------->  | *------------> | *             |
+----------------+----------------+---------------+

N=0 to N=8 goes upwards, so the across parts are an X,Y transpose. The transpose in the 0 part means the higher levels go alternately up or across. So N=0 to N=8 goes up, then the next level N=0,9,18,.,72 goes right at N=72, then N=81,162,..,648 up again, etc.

Wunderlich's conception is successive lower levels of detail as a space-filling curve and the transposing in that case applies to ever smaller parts. But for the integer version here the start direction is kept fixed. The first move N=0 to N=1 is rightwards similar to the PeanoCurve.

FUNCTIONS

See "FUNCTIONS" in Math::PlanePath for the behaviour common to all path classes.

$path = Math::PlanePath::WunderlichMeander->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->rect_to_n_range ($x1,$y1, $x2,$y2)

The returned range is exact, meaning $n_lo and $n_hi are the smallest and biggest in the rectangle.

SEE ALSO

Math::PlanePath, Math::PlanePath::PeanoCurve

Walter Wunderlich "Uber Peano-Kurven", Elemente der Mathematik, 28(1):1-10, 1973.

http://sodwana.uni-ak.ac.at/geom/mitarbeiter/wallner/wunderlich/
http://sodwana.uni-ak.ac.at/geom/mitarbeiter/wallner/wunderlich/pdf/125.pdf
(scanned copy, in German)

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