logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

Math::PlanePath::QuadricIslands -- quadric curve rings

Description

       This path is concentric islands made from four sides each an eight segment zig-zag (per the "QuadicCurve"
       path).

                   27--26                     3
                    |   |
               29--28  25  22--21             2
                |       |   |   |
               30--31  24--23  20--19         1
                    | 4--3          |
           34--33--32    | 16--17--18     <- Y=0
            |         1--2  |
           35--36   7---8  15--14            -1
                    |   |       |
                5---6   9  12--13            -2
                        |   |
                       10--11                -3

                        ^
           -3  -2  -1  X=0  1   2   3   4

       The initial figure is the square N=1,2,3,4 then for the next level each straight side expands to 4x
       longer and a zigzag like N=5 through N=13 and the further sides to N=36.  The individual sides are levels
       of the "QuadricCurve" path.

                                       *---*
                                       |   |
             *---*     becomes     *---*   *   *---*
                                           |   |
                                           *---*
                * <------ *
                |         ^
                |         |
                |         |
                v         |
                * ------> *

       The name "QuadricIslands" here is a slight mistake.  Mandelbrot ("Fractal Geometry of Nature" 1982 page
       50) calls any islands initiated from a square "quadric", not just this eight segment expansion.  This
       curve also appears (unnamed) in Mandelbrot's "How Long is the Coast of Britain", 1967.

   LevelRanges
       Counting the innermost square as level 0, each ring is

           length = 4 * 8^level     many points
           Nlevel = 1 + length[0] + ... + length[level-1]
                  = (4*8^level + 3)/7
           Xstart = - 4^level / 2
           Ystart = - 4^level / 2

       For example the lower partial ring shown above is level 2 starting N=(4*8^2+3)/7=37 at
       X=-(4^2)/2=-8,Y=-8.

       The innermost square N=1,2,3,4 is on 0.5 coordinates, for example N=1 at X=-0.5,Y=-0.5.  This is centred
       on the origin and consistent with the (4^level)/2.  Points from N=5 onwards are integer X,Y.

              4-------3    Y=+1/2
              |       |
              |   o   |
                      |
              1-------2    Y=-1/2

           X=-1/2   X=+1/2

Functions

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

       "$path = Math::PlanePath::QuadricIslands->new ()"
           Create and return a new path object.

   LevelMethods
       "($n_lo, $n_hi) = $path->level_to_n_range($level)"
           Return per "Level Ranges" above,

               ( ( 4 * 8**$level + 3) / 7,
                 (32 * 8**$level - 4) / 7 )

Home Page

License

       Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 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/>.

perl v5.32.0                                       2021-01-23               Math::PlanePath::QuadricIslands(3pm)

Name

       Math::PlanePath::QuadricIslands -- quadric curve rings

See Also

       Math::PlanePath,              Math::PlanePath::QuadricCurve,             Math::PlanePath::KochSnowflakes,
       Math::PlanePath::GosperIslands

Synopsis

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

See Also