NAME
Math::PlanePath::StaircaseAlternating -- stair-step diagonals up and down
SYNOPSIS
use Math::PlanePath::StaircaseAlternating;my $path = Math::PlanePath::StaircaseAlternating->new;my ($x, $y) = $path->n_to_xy (123);
DESCRIPTION
This path makes a staircase pattern up from Y axis down to the X and then back up again.
10 46|9 47--48|8 45 49--50| |7 44--43 51--52| |6 16 42--41 53--54| | |5 17--18 40--39 55--...| |4 15 19--20 38--37| | |3 14--13 21--22 36--35| | |2 2 12--11 23--24 34--33| | | |1 3-- 4 10-- 9 25--26 32--31| | | |Y=0 -> 1 5-- 6 8-- 7 27--28 30--29^X=0 1 2 3 4 5 6 7 8
Square Ends
Option "end_type => "square"" changes the path as follows, omitting one point at each end so as to square up the joins.
9 42--43| |8 41 44--45| |7 40--39 46--47| |6 . 38--37 48--49| |5 14--15 36--35 50--...| | |4 13 16--17 34--33| | |3 12--11 18--19 32--31| | |2 . 10-- 9 20--21 30--29| | |1 2-- 3 8-- 7 22--23 28--27| | | | |Y=0 -> 1 4-- 5-- 6 . 24--25--26^X=0 1 2 3 4 5 6 7 8
The effect is to shorten each diagonal by a constant 1 each time. The lengths of each diagonal still grow by +4 each time (or by +16 up and back).
N Start
The default is to number points starting N=1 as shown above. An optional "n_start" can give a different start, in the same pattern. For example to start at 0,
n_start => 0 n_start => 0, end_type=>"square"46 47 41 4244 48 49 40 43 4443 42 50 51 39 38 45 4615 41 40 52 53 37 36 47 4816 17 39 38 ... 13 14 35 34 ...14 18 19 37 36 12 15 16 33 3213 12 20 21 35 34 11 10 17 18 31 301 11 10 22 23 33 32 9 8 19 20 29 282 3 9 8 24 25 31 30 1 2 7 6 21 22 27 260 4 5 7 6 26 27 29 28 0 3 4 5 23 24 25
FUNCTIONS
See "FUNCTIONS" in Math::PlanePath for behaviour common to all path classes.
- "$path = Math::PlanePath::StaircaseAlternating->new ()"
- "$path = Math::PlanePath::StaircaseAlternating->new (end_type => $str, n_start => $n)"
-
Create and return a new path object. The
"end_type"choices are"jump" (the default)"square"
- "($x,$y) = $path->n_to_xy ($n)"
-
Return the X,Y coordinates of point number
$non the path.
OEIS
Entries in Sloane's Online Encyclopedia of Integer Sequences related to this path include
<http://oeis.org/A084849> (etc)
end_type=jump, n_start=1 (the defaults)A084849 N on diagonal X=Yend_type=jump, n_start=0A014105 N on diagonal X=Y, second hexagonal numbersend_type=jump, n_start=2A096376 N on diagonal X=Yend_type=square, n_start=1A058331 N on diagonal X=Y, 2*squares+1end_type=square, n_start=0A001105 N on diagonal X=Y, 2*squares
SEE ALSO
Math::PlanePath, Math::PlanePath::Staircase, Math::PlanePath::DiagonalsAlternating
HOME PAGE
<http://user42.tuxfamily.org/math-planepath/index.html>
LICENSE
Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Kevin Ryde
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/>.