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.