1Math::PlanePath::GosperUSsiedre(C3o)ntributed Perl DocumMeanttha:t:iPolnanePath::GosperSide(3)
2
3
4
6 Math::PlanePath::GosperSide -- one side of the Gosper island
7
9 use Math::PlanePath::GosperSide;
10 my $path = Math::PlanePath::GosperSide->new;
11 my ($x, $y) = $path->n_to_xy (123);
12
14 This path is a single side of the Gosper island, in integers
15 ("Triangular Lattice" in Math::PlanePath).
16
17 20-... 14
18 /
19 18----19 13
20 /
21 17 12
22 \
23 16 11
24 /
25 15 10
26 \
27 14----13 9
28 \
29 12 8
30 /
31 11 7
32 \
33 10 6
34 /
35 8---- 9 5
36 /
37 6---- 7 4
38 /
39 5 3
40 \
41 4 2
42 /
43 2---- 3 1
44 /
45 0---- 1 <- Y=0
46
47 ^
48 X=0 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
49
50 The path slowly spirals around counter clockwise, with a lot of
51 wiggling in between. The N=3^level point is at
52
53 N = 3^level
54 angle = level * atan(sqrt(3)/5)
55 = level * 19.106 degrees
56 radius = sqrt(7) ^ level
57
58 A full revolution for example takes roughly level=19 which is about
59 N=1,162,000,000.
60
61 Both ends of such levels are in fact sub-spirals, like an "S" shape.
62
63 The path is both the sides and the radial spokes of the "GosperIslands"
64 path, as described in "Side and Radial Lines" in
65 Math::PlanePath::GosperIslands. Each N=3^level point is the start of a
66 "GosperIslands" ring.
67
68 The path is the same as the "TerdragonCurve" except the turns here are
69 by 60 degrees each, whereas "TerdragonCurve" is by 120 degrees. See
70 Math::PlanePath::TerdragonCurve for the turn sequence and total
71 direction formulas etc.
72
74 See "FUNCTIONS" in Math::PlanePath for behaviour common to all path
75 classes.
76
77 "$path = Math::PlanePath::GosperSide->new ()"
78 Create and return a new path object.
79
80 "($x,$y) = $path->n_to_xy ($n)"
81 Return the X,Y coordinates of point number $n on the path. Points
82 begin at 0 and if "$n < 0" then the return is an empty list.
83
84 Fractional $n gives a point on the straight line between integer N.
85
86 Level Methods
87 "($n_lo, $n_hi) = $path->level_to_n_range($level)"
88 Return "(0, 3**$level)".
89
91 Level Endpoint
92 The endpoint of each level N=3^k is at
93
94 X + Y*i*sqrt(3) = b^k
95 where b = 2 + w = 5/2 + sqrt(3)/2*i
96 where w=1/2 + sqrt(3)/2*i sixth root of unity
97
98 X(k) = ( 5*X(k-1) - 3*Y(k-1) )/2 for k>=1
99 Y(k) = ( X(k-1) + 5*Y(k-1) )/2
100 starting X(0)=2 Y(0)=0
101
102 X(k) = 5*X(k-1) - 7*X(k-2) for k>=2
103 starting X(0)=2 X(1)=5
104 = 2, 5, 11, 20, 23, -25, -286, -1255, -4273, -12580, -32989,..
105
106 Y(k) = 5*Y(k-1) - Y*X(k-2) for k>=2
107 starting Y(0)=0 Y(1)=1
108 = 0, 1, 5, 18, 55, 149, 360, 757, 1265, 1026, -3725, ...
109 (A099450)
110
111 The curve base figure is XY(k)=XY(k-1)+rot60(XY(k-1))+XY(k-1) giving
112 XY(k) = (2+w)^k = b^k where w is the sixth root of unity giving the
113 rotation by +60 degrees.
114
115 The mutual recurrences are similar with the rotation done by (X-3Y)/2,
116 (Y+X)/2 per "Triangular Lattice" in Math::PlanePath. The separate
117 recurrences are found by using the first to get Y(k-1) = -2/3*X(k) +
118 5/3*X(k-1) and substitute into the other to get X(k+1). Similar the
119 other way around for Y(k+1).
120
122 Entries in Sloane's Online Encyclopedia of Integer Sequences related to
123 this path include
124
125 <http://oeis.org/A099450> (etc)
126
127 A229215 direction 1,2,3,-1,-2,-3 (clockwise)
128 A099450 Y at N=3^k (for k>=1)
129
130 Also the turn sequence is the same as the terdragon curve, see "OEIS"
131 in Math::PlanePath::TerdragonCurve for the several turn forms, N
132 positions of turns, etc.
133
135 Math::PlanePath, Math::PlanePath::GosperIslands,
136 Math::PlanePath::TerdragonCurve, Math::PlanePath::KochCurve
137
138 Math::Fractal::Curve
139
141 <http://user42.tuxfamily.org/math-planepath/index.html>
142
144 Copyright 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020
145 Kevin Ryde
146
147 Math-PlanePath is free software; you can redistribute it and/or modify
148 it under the terms of the GNU General Public License as published by
149 the Free Software Foundation; either version 3, or (at your option) any
150 later version.
151
152 Math-PlanePath is distributed in the hope that it will be useful, but
153 WITHOUT ANY WARRANTY; without even the implied warranty of
154 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
155 General Public License for more details.
156
157 You should have received a copy of the GNU General Public License along
158 with Math-PlanePath. If not, see <http://www.gnu.org/licenses/>.
159
160
161
162perl v5.36.0 2022-07-22 Math::PlanePath::GosperSide(3)