NAME
Math::PlanePath::MathImageCellularRule246 -- cellular automaton points
SYNOPSIS
use Math::PlanePath::MathImageCellularRule246;
my $path = Math::PlanePath::MathImageCellularRule246->new;
my ($x, $y) = $path->n_to_xy (123);
DESCRIPTION
This is the pattern of Stephen Wolfram's "rule 246" cellular automaton arranged as rows.
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 9
53 54 55 56 57 58 59 60 61 62 63 64 65 8
41 42 43 44 45 46 47 48 49 50 51 52 7
31 32 33 34 35 36 37 38 39 40 6
22 23 24 25 26 27 28 29 30 5
15 16 17 18 19 20 21 4
9 10 11 12 13 14 3
5 6 7 8 2
2 3 4 1
1 <- Y=0
-9 -8 -7 -6 -5 -4 -3 -2 -1 X=0 1 2 3 4 5 6 7 8 9
Each row is runs of 3 out of 4 cells, with even numbered rows having one extra at the start. Each two-row group has a step of 6 more points than the previous two-row.
The rightmost N on the even rows Y=0,2,4,6 etc is the octagonal numbers N=1,8,21,40,65, etc k*(3k-2). The octagonal numbers of the "second kind" 5,16,33,56,85, etc j*(3j+2) are a straight-ish line upwards to the left.
Row Ranges
The left end of each row is
Nleft = ((3Y+2)*Y + 4)/4 if Y even
((3Y+2)*Y + 3)/4 if Y odd
The right end is
Nright = ((3Y+8)*Y + 4)/4 if Y even
((3Y+8)*Y + 5)/4 if Y odd
= Nleft(Y+1) - 1 ie. 1 before next Nleft
The row width Xmax-Xmin = 2*Y but with the gaps the number of visited points in a row is less than that,
rowpoints = 3*Y/2 + 1 if Y even
3*(Y+1)/2 if Y odd
For any Y of course the Nleft to Nright difference is the number of points in the row too
rowpoints = Nright - Nleft + 1
FUNCTIONS
See "FUNCTIONS" in Math::PlanePath for the behaviour common to all path classes.
$path = Math::PlanePath::MathImageCellularRule246->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. $n = $path->xy_to_n ($x,$y)
-
Return the point number for coordinates
$x,$y
.$x
and$y
are each rounded to the nearest integer, which has the effect of treating each cell as a square of side 1. If$x,$y
is outside the pyramid or on a skipped cell the return isundef
.
SEE ALSO
Math::PlanePath, Math::PlanePath::CellularRule54, Math::PlanePath::PyramidRows
http://mathworld.wolfram.com/ElementaryCellularAutomaton.html