NAME

Math::PlanePath::QuadricCurve -- eight segment zig-zag

SYNOPSIS

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

DESCRIPTION

This is a self-similar zig-zag of eight segments,

               18-19                                       5
                |  |                                  
            16-17 20 23-24                                 4
             |     |  |  |                            
            15-14 21-22 25-26                              3
                |           |                         
         11-12-13    29-28-27                              2
          |           |                               
    2--3 10--9       30-31             58-59    ...        1
    |  |     |           |              |  |     |    
 0--1  4  7--8          32          56-57 60 63-64     <- Y=0
       |  |              |           |     |  |       
       5--6             33-34       55-54 61-62           -1
                            |           |             
                     37-36-35    51-52-53                 -2
                      |           |                   
                     38-39 42-43 50-49                    -3
                         |  |  |     |                
                        40-41 44 47-48                    -4
                               |  |                   
                              45-46                       -5
 ^
X=0 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16

The base figure is the initial N=0 to N=8,

    2---3
    |   |    
0---1   4   7---8
        |   |
        5---6

It then repeats, turned to follow edge directions, so N=8 to N=16 is the same shape going upwards, then N=16 to N=24 across, N=24 to N=32 downwards, etc.

The result is the base at ever greater scale extending to the right and with wiggly lines making up the segments. The wiggles don't overlap.

Level Ranges

A given replication extends to

Nlevel = 8^level
X = 4^level
Y = 0

Ymax = 4^0 + 4^1 + ... + 4^level   # 11...11 in base 4
     = (4^(level+1) - 1) / 3
Ymin = - Ymax

FUNCTIONS

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

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

SEE ALSO

Math::PlanePath, Math::PlanePath::QuadricIslands, Math::PlanePath::KochCurve

Math::Fractal::Curve -- its examples/generator4.pl is this curve

HOME PAGE

http://user42.tuxfamily.org/math-planepath/index.html

LICENSE

Copyright 2011 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/>.