1Math::PlanePath::QuadriUcsCeurrvCeo(n3t)ributed Perl DocMuamtehn:t:aPtliaonnePath::QuadricCurve(3)
2
3
4

NAME

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

SYNOPSIS

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

DESCRIPTION

14       This is a self-similar zig-zag of eight segments,
15
16                         18-19                                       5
17                          |  |
18                      16-17 20 23-24                                 4
19                       |     |  |  |
20                      15-14 21-22 25-26                              3
21                          |           |
22                   11-12-13    29-28-27                              2
23                    |           |
24              2--3 10--9       30-31             58-59    ...        1
25              |  |     |           |              |  |     |
26           0--1  4  7--8          32          56-57 60 63-64     <- Y=0
27                 |  |              |           |     |  |
28                 5--6             33-34       55-54 61-62           -1
29                                      |           |
30                               37-36-35    51-52-53                 -2
31                                |           |
32                               38-39 42-43 50-49                    -3
33                                   |  |  |     |
34                                  40-41 44 47-48                    -4
35                                         |  |
36                                        45-46                       -5
37           ^
38          X=0 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16
39
40       The base figure is the initial N=0 to N=8,
41
42                 2---3
43                 |   |
44             0---1   4   7---8
45                     |   |
46                     5---6
47
48       It then repeats, turned to follow edge directions, so N=8 to N=16 is
49       the same shape going upwards, then N=16 to N=24 across, N=24 to N=32
50       downwards, etc.
51
52       The result is the base at ever greater scale extending to the right and
53       with wiggly lines making up the segments.  The wiggles don't overlap.
54
55       The name "QuadricCurve" here is a slight mistake.  Mandelbrot ("Fractal
56       Geometry of Nature" 1982 page 50) calls any islands initiated from a
57       square "quadric", only one of which is with sides by this eight segment
58       expansion.  This curve expansion also appears (unnamed) in Mandelbrot's
59       "How Long is the Coast of Britain", 1967.
60
61   Level Ranges
62       A given replication extends to
63
64           Nlevel = 8^level
65           X = 4^level
66           Y = 0
67
68           Ymax = 4^0 + 4^1 + ... + 4^level   # 11...11 in base 4
69                = (4^(level+1) - 1) / 3
70           Ymin = - Ymax
71
72   Turn
73       The sequence of turns made by the curve is straightforward.  In the
74       base 8 (octal) representation of N, the lowest non-zero digit gives the
75       turn
76
77          low digit   turn (degrees)
78          ---------   --------------
79             1            +90  L
80             2            -90  R
81             3            -90  R
82             4              0
83             5            +90  L
84             6            +90  L
85             7            -90  R
86
87       When the least significant digit is non-zero it determines the turn, to
88       make the base N=0 to N=8 shape.  When the low digit is zero it's
89       instead the next level up, the N=0,8,16,24,etc shape which is in
90       control, applying a turn for the subsequent base part.  So for example
91       at N=16 = 20 octal 20 is a turn -90 degrees.
92

FUNCTIONS

94       See "FUNCTIONS" in Math::PlanePath for behaviour common to all path
95       classes.
96
97       "$path = Math::PlanePath::QuadricCurve->new ()"
98           Create and return a new path object.
99
100       "($x,$y) = $path->n_to_xy ($n)"
101           Return the X,Y coordinates of point number $n on the path.  Points
102           begin at 0 and if "$n < 0" then the return is an empty list.
103
104   Level Methods
105       "($n_lo, $n_hi) = $path->level_to_n_range($level)"
106           Return "(0, 8**$level)".
107

OEIS

109       Entries in Sloane's Online Encyclopedia of Integer Sequences related to
110       this path include
111
112           <http://oeis.org/A133851> (etc)
113
114           A332246   X coordinate
115           A332247   Y coordinate
116           A133851   Y at N=2^k, being successive powers 2^j at k=1mod4
117

SEE ALSO

119       Math::PlanePath, Math::PlanePath::QuadricIslands,
120       Math::PlanePath::KochCurve
121
122       Math::Fractal::Curve -- its examples/generator4.pl is this curve
123

HOME PAGE

125       <http://user42.tuxfamily.org/math-planepath/index.html>
126

LICENSE

128       Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020
129       Kevin Ryde
130
131       This file is part of Math-PlanePath.
132
133       Math-PlanePath is free software; you can redistribute it and/or modify
134       it under the terms of the GNU General Public License as published by
135       the Free Software Foundation; either version 3, or (at your option) any
136       later version.
137
138       Math-PlanePath is distributed in the hope that it will be useful, but
139       WITHOUT ANY WARRANTY; without even the implied warranty of
140       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
141       General Public License for more details.
142
143       You should have received a copy of the GNU General Public License along
144       with Math-PlanePath.  If not, see <http://www.gnu.org/licenses/>.
145
146
147
148perl v5.38.0                      2023-07-20  Math::PlanePath::QuadricCurve(3)
Impressum