NAME

Math::PlanePath::MathImageQuintetCurve -- self-similar "plus" shaped curve

SYNOPSIS

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

DESCRIPTION

In progress.

This path is a self-similar curve tracing out a "+" shape,

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

  ^
 X=0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 ...

The base figure is the initial N=0 to N=4.

        |
        |
0---1   4      base figure
    |   |
    |   |
    2---3

It corresponds to a traversal of a "+" shape,

     .....5
     .    |
     .   <|
     .    |
0----1....4.....
. v  |    |    .
.    |>   |>   .
.    |    |    .
.....2----3.....
     . v  .
     .    .
     .    .
     ......

The "v", ">" etc notches are side the figure is directed at the higher replication levels. The 0, 2 and 3 parts are the right hand side of the line which means a plain repetition of the base figure. The 1 and 4 parts are to the left which means a reversal. The first such reversal is seen above as N=5 to N=10.

5---6---7
        |
        |       reversed figure
    9---8
    |
    |

Arms

The optional arms parameter can give up to four copies of the curve, each advancing successively. For example arms=>4 is as follows. Notice the N=4*k points are the plain curve, and N=4*k+1, N=3*k+2 and N=3*k+3 are rotated copies of it.

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

Essentially the curve fills an ever expanding "+" shape with one corner at the origin. In the following picture the plain curve fills "A" and there's room for two more arms to fill B and C, rotated 120 and 240 degrees respectively.

            +---+
            |   |
    +---+---    +---+
    |   |     A     |
+---+   +---+   +---+
|     B     |   |   |
+---+   +---O---+   +---+
    |   |   |     D     |
    +---+   +---+   +---+
    |     C     |   |
    +---+   +---+---+ 
        |   |
        +---+

FUNCTIONS

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

$path = Math::PlanePath::MathImageQuintetCurve->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.

Fractional positions give an X,Y position along a straight line between the integer positions.

$n = $path->n_start()

Return 0, the first N in the path.

SEE ALSO

Math::PlanePath, Math::PlanePath::Flowsnake