Finish up a draft of the modulo patterns article
|
@ -462,9 +462,9 @@ Here's one such pattern:
|
|||
Hold on a moment; it's actully not so obvious why our condition _still_ works. When we just turned
|
||||
on a grid, things were simple. As long as we didn't end up facing the same way we started, we will
|
||||
eventually perform the exact same motions in reverse. The same is not true when turning 120 degrees, like
|
||||
we suggested. Here's a circle with the turn angles labeled:
|
||||
we suggested. Here's an animated circle all of the turns we would make:
|
||||
|
||||
{{< figure src="turn_3_1.png" caption="Orientations when turning 120 degrees" class="small" alt="Possible orientations when turning 120 degrees." >}}
|
||||
{{< figure src="turn_3_1.gif" caption="Orientations when turning 120 degrees" class="small" alt="Possible orientations when turning 120 degrees." >}}
|
||||
|
||||
We never quite do the exact _opposite_ of any one of our movements. So then, will we come back to the
|
||||
origin anyway? Well, let's start simple. Suppose we always turn by exactly one 120-degree increment
|
||||
|
@ -498,21 +498,132 @@ instead of 1?
|
|||
|
||||
Even though we first turn a whole 240 degrees, the second time we turn we "overshoot" our initial bearing, and end up at 120 degrees
|
||||
compared to it. As soon as we turn 240 more degrees (turning the third time), we end up back at 0.
|
||||
In short, even though we "visited" each bearing in a different order, we visited them all.
|
||||
In short, even though we "visited" each bearing in a different order, we visited them all, and
|
||||
exactly once at that. Here's a visualization:
|
||||
|
||||
{{< figure src="turn_3_2.png" caption="Orientations when turning 120 degrees, twice at a time" class="small" alt="Possible orientations when turning 120 degrees, twice at a time." >}}
|
||||
{{< figure src="turn_3_2.gif" caption="Orientations when turning 120 degrees, twice at a time" class="small" alt="Possible orientations when turning 120 degrees, twice at a time." >}}
|
||||
|
||||
Let's try put some mathematical backing to this "visited them all" idea.
|
||||
Note that even though in the above picture it looks like we're just turning left instead of right,
|
||||
that's not the case; a single turn of 240 degrees is more than half the circle, so our second
|
||||
bearing ends up on the left side of the circle even though we turn right.
|
||||
|
||||
{{< todo >}}Remainders, visited them all, etc.{{< /todo >}}
|
||||
Just to make sure we really see what's happening, let's try this when there are 5 possible directions,
|
||||
and when we still make two turns (now of 72 degrees each)
|
||||
|
||||
But let's not be so boring. We can branch out some, of course.
|
||||
{{< figure src="turn_5_2.gif" caption="Orientations when turning 72 degrees, twice at a time" class="small" alt="Possible orientations when turning 72 degrees, twice at a time." >}}
|
||||
|
||||
Let's try put some mathematical backing to this "visited them all" idea, and turning in general.
|
||||
First, observe that as soon as we turn 360 degrees, it's as good as not turning at all - we end
|
||||
up facing up again. If we turned 480 degrees (that is, two turns of 240 degrees each), the first
|
||||
360 can be safely ignored, since it puts us where we started; only the 120 degrees that remain
|
||||
are needed to figure out our final bearing. In short, the final direction we're facing is
|
||||
the remainder from dividing by 360. We already know how to formulate this using modular arithmetic:
|
||||
if we turn \\(t\\) degrees \\(k\\) times, and end up at final bearing (remainder) \\(b\\), this
|
||||
is captured by:
|
||||
|
||||
{{< latex >}}
|
||||
kt \equiv b\ (\text{mod}\ 360)
|
||||
{{< /latex >}}
|
||||
|
||||
Of course, if we end up facing the same way we started, we get the familiar equivalence:
|
||||
|
||||
{{< latex >}}
|
||||
kt \equiv 0\ (\text{mod}\ 360)
|
||||
{{< /latex >}}
|
||||
|
||||
Even though the variables in this equivalence mean different things now than they did last
|
||||
time we saw it, the mathematical properties remain the same. For instance, we can say that
|
||||
after \\(360/\\text{gcd}(360, t)\\) turns, we'll end up facing the way that we started.
|
||||
|
||||
So far, so good. What I don't like about this, though, is that we have all of these
|
||||
numbers of degrees all over our equations: 72 degrees, 144 degrees, and so forth. However,
|
||||
something like 73 degrees (in a 5-turn system) is just not a valid bearing,
|
||||
and nor is 71. We have so many possible degrees (360 of them, to be exact), but we're only
|
||||
using a handful! That's wasteful. Instead, observe that for a system with \\(c\\) turns,
|
||||
the smallest possible turn is \\(360/c\\). Let's call this turn \\(\\theta\\) (theta).
|
||||
Now, notice that we always turn in multiples of \\(\\theta\\): a single turn moves us \\(\\theta\\)
|
||||
degrees, two turns move us \\(2\\theta\\) degrees, and so on. If we define \\(r\\) to be
|
||||
the number of turns after a single cycle, we have \\(t=r\\theta\\), and our turning
|
||||
equation can be written as to:
|
||||
|
||||
{{< latex >}}
|
||||
kr\theta \equiv 0\ (\text{mod}\ c\theta)
|
||||
{{< /latex >}}
|
||||
|
||||
Now, once again, recall that the above equivalence is just notation for the following:
|
||||
|
||||
{{< latex >}}
|
||||
\begin{aligned}
|
||||
& c\theta|kr\theta \\
|
||||
\Leftrightarrow\ & c|kr
|
||||
\end{aligned}
|
||||
{{< /latex >}}
|
||||
|
||||
And finally, observing that \\(kr=kr-0\\), we have:
|
||||
|
||||
{{< latex >}}
|
||||
kr \equiv 0\ (\text{mod}\ c)
|
||||
{{< /latex >}}
|
||||
|
||||
This equivalence says the same thing as our earlier one; however, instead of being in terms
|
||||
of degrees, it's in terms of the number of turns \\(c\\) and the turns-per-cycle \\(r\\).
|
||||
Now, recall once again that for this equivalence to hold in \\(k>0\\) steps, we need
|
||||
\\(k = c/\\text{gcd}(c,r)\\).
|
||||
|
||||
We're close now: we have a sequence of \\(k\\) steps that will lead us back to the beginning.
|
||||
What's left is to show that these \\(k\\) steps are evenly distributed throughout our circle,
|
||||
which is the key property that makes it possible for us to make a polygon out of them (and
|
||||
thus end up back where we started).
|
||||
|
||||
To show this, say that we have a largest common divisor \\(f=\\text{gcd}(c,r)\\), and that \\(c=fe\\) and \\(r=fs\\). We can once again "divide through" by \\(f\\), and
|
||||
get:
|
||||
|
||||
{{< latex >}}
|
||||
ks \equiv 0\ (\text{mod}\ e)
|
||||
{{< /latex >}}
|
||||
|
||||
Now, we know that \\(\\text{gcd}(e,s)=1\\) ([see this section below](#numbers-divided-by-their-textgcd-have-no-common-factors)), and thus:
|
||||
|
||||
{{< latex >}}
|
||||
k = e/\text{gcd}(e,s) = e
|
||||
{{< /latex >}}
|
||||
|
||||
That is, our cycle will repeat after \\(e\\) remainders. But wait, we've only got \\(e\\) possible
|
||||
remainders: the numbers \\(0\\) through \\(e-1\\)! Thus, for a cycle to repeat after \\(e\\) remainders,
|
||||
all possible remainders must occur. For a concrete example, take \\(e=5\\); our remainders will
|
||||
be the set \\(\\{0,1,2,3,4\\}\\). Now, let's "multiply back through"
|
||||
by \\(f\\):
|
||||
|
||||
{{< latex >}}
|
||||
kfs \equiv 0\ (\text{mod}\ fe)
|
||||
{{< /latex >}}
|
||||
|
||||
We still have \\(e\\) possible remainders, but this time they are multiplied by \\(f\\).
|
||||
For example, taking \\(e\\) to once again be equal to \\(5\\), we have the set of possible remainders
|
||||
\\(\\{0, f, 2f, 3f, 4f\\}\\). The important bit is that these remainders are all evenly spaced, and
|
||||
that space between them is \\(f=\\text{gcd}(c,r)\\).
|
||||
|
||||
Let's recap: we have confirmed that for \\(c\\) possible turns (4 in our original formulation),
|
||||
and \\(r\\) turns at a time, we will always loop after \\(k=c/\\text{gcd}(c,r)\\) steps,
|
||||
evenly spaced out at \\(\\text{gcd}(c,r)\\) turns. No specific properties from \\(c\\) or \\(r\\)
|
||||
are needed for this to work. Finally, recall from the previous
|
||||
section that \\(r\\) is zero (and thus, our pattern breaks down) whenever the divisor \\(d\\) (9 in our original formulation) is itself
|
||||
divisible by \\(c\\). And so, __as long as we pick a system with \\(c\\) possible directions
|
||||
and divisor \\(d\\), we will always loop back and create a pattern as long as \\(c\\nmid d\\) (\\(c\\)
|
||||
does not divide \\(d\\))__.
|
||||
|
||||
Let's try it out! There's a few pictures below. When reading the captions, keep in mind that the _base_
|
||||
is one more than the _divisor_ (we started with numbers in the usual base 10, but divided by 9).
|
||||
|
||||
{{< figure src="pattern_1_7_t5.svg" caption="Pattern generated by the number 1 in base 8 while turning 5 times." class="tiny" alt="Pattern generated by the number 1 by summing digits in base 8 and turning 72 degrees." >}}
|
||||
|
||||
{{< figure src="pattern_3_4_t7.svg" caption="Pattern generated by the number 3 in base 5 while turning 7 times." class="tiny" alt="Pattern generated by the number 3 by summing digits in base 5 and turning 51 degrees." >}}
|
||||
|
||||
{{< figure src="pattern_3_11_t6.svg" caption="Pattern generated by the number 3 in base 12 while turning 6 times." class="tiny" alt="Pattern generated by the number 3 by summing digits in base 12 and turning 60 degrees." >}}
|
||||
|
||||
### Omitted Proofs
|
||||
{{< figure src="pattern_2_11_t7.svg" caption="Pattern generated by the number 2 in base 12 while turning 7 times." class="tiny" alt="Pattern generated by the number 2 by summing digits in base 12 and turning 51 degrees." >}}
|
||||
|
||||
### Referenced Proofs
|
||||
|
||||
#### Adding Two Congruences
|
||||
__Claim__: If for some numbers \\(a\\), \\(b\\), \\(c\\), \\(d\\), and \\(k\\), we have
|
||||
|
|
164
content/blog/modulo_patterns/pattern_2_11_t7.svg
Normal file
|
@ -0,0 +1,164 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
|
||||
<svg width="600.1996835705016" height="587.5080813062355"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
|
||||
|
||||
<line x1="345.26009149615226" y1="178.29249583438352" x2="565.2600914961523" y2="178.29249583438352" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="565.2600914961523" cy="178.29249583438352" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="565.2600914961523" y1="178.29249583438352" x2="590.1996835705016" y2="209.5657551331047" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="590.1996835705016" cy="209.5657551331047" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="590.1996835705016" y1="209.5657551331047" x2="572.3980088539964" y2="287.55998810765055" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="572.3980088539964" cy="287.55998810765055" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="572.3980088539964" y1="287.55998810765055" x2="464.28174470570616" y2="339.6260368017576" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="464.28174470570616" cy="339.6260368017576" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="464.28174470570616" y1="339.6260368017576" x2="320.1267258413191" y2="270.20463854294826" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="320.1267258413191" cy="270.20463854294826" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="320.1267258413191" y1="270.20463854294826" x2="275.62253905005616" y2="75.21905610658354" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="275.62253905005616" cy="75.21905610658354" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="275.62253905005616" y1="75.21905610658354" x2="288.0923350872309" y2="59.58242645722294" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="288.0923350872309" cy="59.58242645722294" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="288.0923350872309" y1="59.58242645722294" x2="348.0923350872308" y2="59.58242645722294" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="348.0923350872308" cy="59.58242645722294" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="348.0923350872308" y1="59.58242645722294" x2="410.4413152731042" y2="137.76557470402594" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="410.4413152731042" cy="137.76557470402594" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="410.4413152731042" y1="137.76557470402594" x2="379.2883845192202" y2="274.25548240948126" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="379.2883845192202" cy="274.25548240948126" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="379.2883845192202" y1="274.25548240948126" x2="217.11398829678478" y2="352.35455545064167" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="217.11398829678478" cy="352.35455545064167" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="217.11398829678478" y1="352.35455545064167" x2="18.900837358252573" y2="256.9001328447789" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="18.900837358252573" cy="256.9001328447789" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="18.900837358252573" y1="256.9001328447789" x2="10.0" y2="217.90301635750598" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="10.0" cy="217.90301635750598" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="10.0" y1="217.90301635750598" x2="59.87918414869867" y2="155.3564977600636" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="59.87918414869867" cy="155.3564977600636" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="59.87918414869867" y1="155.3564977600636" x2="179.87918414869867" y2="155.3564977600636" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="179.87918414869867" cy="155.3564977600636" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="179.87918414869867" y1="155.3564977600636" x2="279.63755244609604" y2="280.4495349549484" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="279.63755244609604" cy="280.4495349549484" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="279.63755244609604" y1="280.4495349549484" x2="235.13336565483317" y2="475.4351173913131" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="235.13336565483317" cy="475.4351173913131" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="235.13336565483317" y1="475.4351173913131" x2="217.11398829678478" y2="484.1127921736643" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="217.11398829678478" cy="484.1127921736643" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="217.11398829678478" y1="484.1127921736643" x2="163.05585622263965" y2="458.0797678266108" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="163.05585622263965" cy="458.0797678266108" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="163.05585622263965" y1="458.0797678266108" x2="140.8037628270082" y2="360.58697660842836" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="140.8037628270082" cy="360.58697660842836" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="140.8037628270082" y1="360.58697660842836" x2="228.09233508723085" y2="251.13056906290424" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="228.09233508723085" cy="251.13056906290424" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="228.09233508723085" y1="251.13056906290424" x2="408.0923350872308" y2="251.13056906290424" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="408.0923350872308" cy="251.13056906290424" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="408.0923350872308" y1="251.13056906290424" x2="545.2600914961523" y2="423.1334952058708" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="545.2600914961523" cy="423.1334952058708" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="545.2600914961523" y1="423.1334952058708" x2="536.3592541378997" y2="462.1306116931437" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="536.3592541378997" cy="462.1306116931437" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="536.3592541378997" y1="462.1306116931437" x2="464.28174470570616" y2="496.8413108225484" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="464.28174470570616" cy="496.8413108225484" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="464.28174470570616" y1="496.8413108225484" x2="356.1654805574159" y2="444.7752621284414" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="356.1654805574159" cy="444.7752621284414" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="356.1654805574159" y1="444.7752621284414" x2="320.56213112440554" y2="288.7867961793496" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="320.56213112440554" cy="288.7867961793496" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="320.56213112440554" y1="288.7867961793496" x2="445.2600914961522" y2="132.42049968574366" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="445.2600914961522" cy="132.42049968574366" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="445.2600914961522" y1="132.42049968574366" x2="465.2600914961522" y2="132.42049968574366" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="465.2600914961522" cy="132.42049968574366" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="465.2600914961522" y1="132.42049968574366" x2="502.66947960767624" y2="179.33038863382546" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="502.66947960767624" cy="179.33038863382546" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="502.66947960767624" y1="179.33038863382546" x2="480.4173862120448" y2="276.8231798520078" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="480.4173862120448" cy="276.8231798520078" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="480.4173862120448" y1="276.8231798520078" x2="354.2817447057061" y2="337.566903328466" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="354.2817447057061" cy="337.566903328466" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="354.2817447057061" y1="337.566903328466" x2="192.10734848327067" y2="259.46783028730556" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="192.10734848327067" cy="259.46783028730556" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="192.10734848327067" y1="259.46783028730556" x2="143.1527430128815" y2="44.98368960730435" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="143.1527430128815" cy="44.98368960730435" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="143.1527430128815" y1="44.98368960730435" x2="168.09233508723082" y2="13.710430308583135" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="168.09233508723082" cy="13.710430308583135" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="168.09233508723082" y1="13.710430308583135" x2="248.09233508723082" y2="13.710430308583135" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="248.09233508723082" cy="13.710430308583135" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="248.09233508723082" y1="13.710430308583135" x2="322.91111131027884" y2="107.53020820474671" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="322.91111131027884" cy="107.53020820474671" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="322.91111131027884" y1="107.53020820474671" x2="287.30776187726855" y2="263.5186741538385" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="287.30776187726855" cy="263.5186741538385" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="287.30776187726855" y1="263.5186741538385" x2="107.11398829678475" y2="350.2954219773501" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="107.11398829678475" cy="350.2954219773501" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="107.11398829678475" y1="350.2954219773501" x2="89.09461093873638" y2="341.617747194999" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="89.09461093873638" cy="341.617747194999" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="89.09461093873638" y1="341.617747194999" x2="75.74335490135752" y2="283.12207246408957" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="75.74335490135752" cy="283.12207246408957" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="75.74335490135752" y1="283.12207246408957" x2="138.09233508723085" y2="204.93892421728657" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="138.09233508723085" cy="204.93892421728657" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="138.09233508723085" y1="204.93892421728657" x2="278.0923350872309" y2="204.93892421728657" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="278.0923350872309" cy="204.93892421728657" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="278.0923350872309" y1="204.93892421728657" x2="390.32049942180294" y2="345.66859106153186" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="390.32049942180294" cy="345.66859106153186" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="390.32049942180294" y1="345.66859106153186" x2="341.3658939514137" y2="560.1527317415331" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="341.3658939514137" cy="560.1527317415331" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="341.3658939514137" y1="560.1527317415331" x2="305.32713923531696" y2="577.5080813062355" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="305.32713923531696" cy="577.5080813062355" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="305.32713923531696" y1="577.5080813062355" x2="233.24962980312347" y2="542.7973821768308" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="233.24962980312347" cy="542.7973821768308" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="233.24962980312347" y1="542.7973821768308" x2="206.54711772836572" y2="425.8060327150119" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="206.54711772836572" cy="425.8060327150119" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="206.54711772836572" y1="425.8060327150119" x2="306.30548602576306" y2="300.71299552012715" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="306.30548602576306" cy="300.71299552012715" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="306.30548602576306" y1="300.71299552012715" x2="506.30548602576306" y2="300.71299552012715" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="506.30548602576306" cy="300.71299552012715" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="506.30548602576306" y1="300.71299552012715" x2="518.7752820629378" y2="316.34962516948775" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="518.7752820629378" cy="316.34962516948775" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="518.7752820629378" y1="316.34962516948775" x2="505.4240260255588" y2="374.8452999003972" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="505.4240260255588" cy="374.8452999003972" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="505.4240260255588" y1="374.8452999003972" x2="415.32713923531696" y2="418.2336738121529" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="415.32713923531696" cy="418.2336738121529" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="415.32713923531696" y1="418.2336738121529" x2="289.1914977289782" y2="357.48995033569486" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="289.1914977289782" cy="357.48995033569486" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="289.1914977289782" y1="357.48995033569486" x2="249.13772961684163" y2="182.00292614296657" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="249.13772961684163" cy="182.00292614296657" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="249.13772961684163" y1="182.00292614296657" x2="386.305486025763" y2="10.0" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="386.305486025763" cy="10.0" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="386.305486025763" y1="10.0" x2="426.305486025763" y2="10.0" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="426.305486025763" cy="10.0" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="426.305486025763" y1="10.0" x2="476.18467017446164" y2="72.5465185974424" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="476.18467017446164" cy="72.5465185974424" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="476.18467017446164" y1="72.5465185974424" x2="449.48215809970395" y2="189.5378680592612" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="449.48215809970395" cy="189.5378680592612" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="449.48215809970395" y1="189.5378680592612" x2="305.32713923531685" y2="258.95926631807055" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="305.32713923531685" cy="258.95926631807055" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="305.32713923531685" y1="258.95926631807055" x2="125.13336565483307" y2="172.18251849455896" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="125.13336565483307" cy="172.18251849455896" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="125.13336565483307" y1="172.18251849455896" x2="120.68294697570678" y2="152.68396025092247" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="120.68294697570678" cy="152.68396025092247" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="120.68294697570678" y1="152.68396025092247" x2="158.0923350872308" y2="105.7740713028407" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="158.0923350872308" cy="105.7740713028407" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="158.0923350872308" y1="105.7740713028407" x2="258.0923350872308" y2="105.7740713028407" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="258.0923350872308" cy="105.7740713028407" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="258.0923350872308" y1="105.7740713028407" x2="345.38090734745356" y2="215.23047884836487" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="345.38090734745356" cy="215.23047884836487" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="345.38090734745356" y1="215.23047884836487" x2="305.3271392353169" y2="390.71750304109315" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="305.3271392353169" cy="390.71750304109315" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="305.3271392353169" y1="390.71750304109315" x2="107.11398829678473" y2="486.1719256469559" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="107.11398829678473" cy="486.1719256469559" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="107.11398829678473" y1="486.1719256469559" x2="71.07523358068796" y2="468.8165760822536" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="71.07523358068796" cy="468.8165760822536" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="71.07523358068796" y1="468.8165760822536" x2="53.27355886418278" y2="390.82234310770775" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="53.27355886418278" cy="390.82234310770775" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="53.27355886418278" y1="390.82234310770775" x2="128.0923350872308" y2="297.00256521154415" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="128.0923350872308" cy="297.00256521154415" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="128.0923350872308" y1="297.00256521154415" x2="288.09233508723077" y2="297.00256521154415" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="288.09233508723077" cy="297.00256521154415" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="288.09233508723077" y1="297.00256521154415" x2="412.7902954589775" y2="453.36886170515015" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="412.7902954589775" cy="453.36886170515015" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="412.7902954589775" y1="453.36886170515015" x2="408.33987677985124" y2="472.8674199487866" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="408.33987677985124" cy="472.8674199487866" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="408.33987677985124" y1="472.8674199487866" x2="354.2817447057061" y2="498.9004442958401" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="354.2817447057061" cy="498.9004442958401" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="354.2817447057061" y1="498.9004442958401" x2="264.18485791546414" y2="455.5120703840844" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="264.18485791546414" cy="455.5120703840844" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="264.18485791546414" y1="455.5120703840844" x2="233.0319271615801" y2="319.022162678629" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="233.0319271615801" cy="319.022162678629" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="233.0319271615801" y1="319.022162678629" x2="345.26009149615214" y2="178.2924958343836" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="345.26009149615214" cy="178.2924958343836" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
|
||||
</svg>
|
After Width: | Height: | Size: 19 KiB |
66
content/blog/modulo_patterns/pattern_3_4_t7.svg
Normal file
|
@ -0,0 +1,66 @@
|
|||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
|
||||
<svg width="159.48689754371753" height="158.3975428930541"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
|
||||
|
||||
<line x1="22.46979603717472" y1="39.89495294132937" x2="102.46979603717472" y2="39.89495294132937" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="102.46979603717472" cy="39.89495294132937" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="102.46979603717472" y1="39.89495294132937" x2="139.87918414869876" y2="86.80484188941116" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="139.87918414869876" cy="86.80484188941116" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="139.87918414869876" y1="86.80484188941116" x2="130.97834679044615" y2="125.8019583766841" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="130.97834679044615" cy="125.8019583766841" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="130.97834679044615" y1="125.8019583766841" x2="112.9589694323978" y2="134.47963315903525" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="112.9589694323978" cy="134.47963315903525" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="112.9589694323978" y1="134.47963315903525" x2="40.88146000020426" y2="99.7689340296306" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="40.88146000020426" cy="99.7689340296306" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="40.88146000020426" y1="99.7689340296306" x2="27.53020396282538" y2="41.2732592987212" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="27.53020396282538" cy="41.2732592987212" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="27.53020396282538" y1="41.2732592987212" x2="52.46979603717471" y2="10.0" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="52.46979603717471" cy="10.0" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="52.46979603717471" y1="10.0" x2="72.46979603717472" y2="10.0" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="72.46979603717472" cy="10.0" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="72.46979603717472" y1="10.0" x2="122.34898018587339" y2="72.54651859744239" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="122.34898018587339" cy="72.54651859744239" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="122.34898018587339" y1="72.54651859744239" x2="108.99772414849453" y2="131.0421933283518" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="108.99772414849453" cy="131.0421933283518" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="108.99772414849453" y1="131.0421933283518" x2="72.95896943239777" y2="148.3975428930541" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="72.95896943239777" cy="148.3975428930541" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="72.95896943239777" y1="148.3975428930541" x2="54.93959207434939" y2="139.71986811070295" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="54.93959207434939" cy="139.71986811070295" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="54.93959207434939" y1="139.71986811070295" x2="37.13791735784422" y2="61.72563513615707" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="37.13791735784422" cy="61.72563513615707" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="37.13791735784422" y1="61.72563513615707" x2="74.54730546936823" y2="14.815746188075272" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="74.54730546936823" cy="14.815746188075272" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="74.54730546936823" y1="14.815746188075272" x2="114.54730546936823" y2="14.815746188075272" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="114.54730546936823" cy="14.815746188075272" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="114.54730546936823" y1="14.815746188075272" x2="127.0171015065429" y2="30.45237583743587" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="127.0171015065429" cy="30.45237583743587" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="127.0171015065429" y1="30.45237583743587" x2="109.21542679003775" y2="108.44660881198178" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="109.21542679003775" cy="108.44660881198178" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="109.21542679003775" y1="108.44660881198178" x2="55.157294715892604" y2="134.47963315903525" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="55.157294715892604" cy="134.47963315903525" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="55.157294715892604" y1="134.47963315903525" x2="19.11853999979584" y2="117.12428359433292" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="19.11853999979584" cy="117.12428359433292" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="19.11853999979584" y1="117.12428359433292" x2="14.668121320669547" y2="97.62572535069648" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="14.668121320669547" cy="97.62572535069648" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="14.668121320669547" y1="97.62572535069648" x2="64.54730546936821" y2="35.07920675325408" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="64.54730546936821" cy="35.07920675325408" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="64.54730546936821" y1="35.07920675325408" x2="124.54730546936821" y2="35.07920675325408" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="124.54730546936821" cy="35.07920675325408" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="124.54730546936821" y1="35.07920675325408" x2="149.48689754371753" y2="66.35246605197526" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="149.48689754371753" cy="66.35246605197526" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="149.48689754371753" y1="66.35246605197526" x2="145.03647886459126" y2="85.85102429561174" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="145.03647886459126" cy="85.85102429561174" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="145.03647886459126" y1="85.85102429561174" x2="72.95896943239774" y2="120.5617234250164" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="72.95896943239774" cy="120.5617234250164" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="72.95896943239774" y1="120.5617234250164" x2="18.90083735825258" y2="94.52869907796291" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="18.90083735825258" cy="94.52869907796291" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="18.90083735825258" y1="94.52869907796291" x2="10.0" y2="55.53158259068997" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="10.0" cy="55.53158259068997" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
<line x1="10.0" y1="55.53158259068997" x2="22.469796037174667" y2="39.89495294132938" style="stroke:black; stroke-width:5"/>
|
||||
<circle cx="22.469796037174667" cy="39.89495294132938" r="3" style="stroke:black; stroke-width:5" fill="black"/>
|
||||
|
||||
</svg>
|
After Width: | Height: | Size: 7.0 KiB |
BIN
content/blog/modulo_patterns/turn_3_1.gif
Normal file
After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 56 KiB |
BIN
content/blog/modulo_patterns/turn_3_2.gif
Normal file
After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 56 KiB |
Before Width: | Height: | Size: 3.6 MiB After Width: | Height: | Size: 3.9 MiB |
Before Width: | Height: | Size: 65 KiB |
BIN
content/blog/modulo_patterns/turn_5_2.gif
Normal file
After Width: | Height: | Size: 104 KiB |
Before Width: | Height: | Size: 4.5 MiB After Width: | Height: | Size: 4.5 MiB |