Provided by: libmath-planepath-perl_113-1_all bug

NAME

       Math::PlanePath::DekkingCurve -- 5x5 self-similar edge curve

SYNOPSIS

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

DESCRIPTION

       This is an integer version of a 5x5 self-similar curve by Dekking,

            10 |             123-124-125-...      86--85
               |               |                   |   |
             9 | 115-116-117 122-121  90--89--88--87  84
               |   |       |       |   |               |
             8 | 114-113 118-119-120  91--92--93  82--83
               |       |                       |   |
             7 |     112 107-106 103-102  95--94  81  78--77
               |       |   |   |   |   |   |       |   |   |
             6 |     111 108 105-104 101  96--97  80--79  76
               |       |   |           |       |           |
             5 |     110-109  14--15 100--99--98  39--40  75          66--65
               |               |   |               |   |   |           |   |
             4 |  10--11--12--13  16  35--36--37--38  41  74  71--70  67  64
               |   |               |   |               |   |   |   |   |   |
             3 |   9---8---7  18--17  34--33--32  43--42  73--72  69--68  63
               |           |   |               |   |                       |
             2 |       5---6  19  22--23  30--31  44  47--48  55--56--57  62--61
               |       |       |   |   |   |       |   |   |   |       |       |
             1 |       4---3  20--21  24  29--28  45--46  49  54--53  58--59--60
               |           |           |       |           |       |
           Y=0 |   0---1---2          25--26--27          50--51--52
               +----------------------------------------------------------------
                 X=0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15

       The base pattern is the N=0 to N=25 section.  It then repeats with rotations or reversals
       which make the ends join.  For example N=75 to N=100 is the base pattern in reverse, ie.
       from N=25 down to N=0.  Or N=50 to N=75 is reverse and also rotate by -90.

       The curve segments are edges of squares in a 5x5 arrangement.

            +- - -+- - -+- - 14----15  ---+
            |     |     |     |  v  |>    |
               ^     ^       <|     |
           10----11----12----13- - 16   --+
            |              v        |>    |
            |>       ^           ^  |
            9-----8-----7 -- 18----17   --+
               v  |     |     |>          |
            |        ^  |>    |        ^
            +- -  5-----6 -  19    22----23
                  |          <|     |    <|
            |    <|  ^        |    <|     |
            +- -  4-----3    20----21 -- 24
                        |       v        <|
               ^     ^  |>    |     |     |
            0-----1-----2  -- + -- -+-   25

       The little notch marks show which square each edge represents.  This is the side the curve
       expands into at the next level.  For example N=1 to N=2 has its notch on the left so the
       next level N=25 to N=50 expands on the left.

       An expansion on the left is a repeat of the base shape, possibly rotated 90, 180 or 270
       degrees.  An expansion on the right is the base shape in reverse, as for example N=2 to
       N=3 on the right becomes N=50 to N=75 traversing to the right at the next level.

FUNCTIONS

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

       "$path = Math::PlanePath::DekkingCurve->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::DekkingCentres, Math::PlanePath::CincoCurve,
       Math::PlanePath::PeanoCurve

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