<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>PENTRONIK.ART</title>
 <link href="https://www.pentronik.art/atom.xml" rel="self"/>
 <link href="https://www.pentronik.art/"/>
 <updated>2024-11-24T14:42:41-08:00</updated>
 <id>https://www.pentronik.art</id>
 <author>
   <name>pentronik</name>
   <email>pentronik@pentronik.art</email>
 </author>

 
 <entry>
   <title>Genuary 14, Aesemic</title>
   <link href="https://www.pentronik.art/2023/01/14/genuary14"/>
   <updated>2023-01-14T00:00:00-08:00</updated>
   <id>https://www.pentronik.art/2023/01/14/genuary14</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Asemic_writing&quot;&gt;Aesemic&lt;/a&gt; writing is a concept I can get behind.&lt;/p&gt;

&lt;figure&gt;
&lt;img src=&quot;/assets/IMG_0229.png&quot; alt=&quot;Asemic writing output from the penplotter&quot; /&gt;
&lt;figcaption&gt;Pen plotter output of aesemic writing.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;The above is my final plotter output.
Below is the p5js sketch I made first.
These are also on &lt;a href=&quot;https://mstdn.social/@pentronik/109689807463049295&quot;&gt;mastodon&lt;/a&gt;.&lt;/p&gt;

&lt;figure&gt;
&lt;img src=&quot;/assets/gen14-5.png&quot; alt=&quot;Asemic writing output with p5js&quot; /&gt;
&lt;figcaption&gt;
P5JS sketch output of aesemic writing.
To my eye it looks more writing-like.
&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;More on all that later, first I want to detour to my previous attempts with aesemic writing.
I referenced my past attempts at aesemic in this &lt;a href=&quot;https://mstdn.social/@pentronik/109637573181266509&quot;&gt;toot last week&lt;/a&gt;.
Lets take a closer look.&lt;/p&gt;

&lt;p&gt;In my last go at this, I tried making cursive words with Bezier curves connected together.
The control points are generated by selecting random points on a circle (from N possible positions) that moves along the word.&lt;/p&gt;

&lt;figure&gt;
&lt;img src=&quot;/assets/IMG_4573.png&quot; alt=&quot;Bezier based asemic writing in red and black&quot; /&gt;
&lt;figcaption&gt;
Some asemic writing I worked on a couple of years ago when I implemented Bezier curves.
You can probably find it on the twit site if you want to do that.
&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Since it only draws from a pre-determined subset of the random points on the cirlce, the words are formed from a set of letters.
An alphabet.
You can see some repeated patterns in the page of writing above.
Additionally, I added some sloppiness terms, so the letters aren’t identical each time they’re drawn.
It’s supposed to represent handwriting instead of printed text.&lt;/p&gt;

&lt;p&gt;I like the loopyness and fluidity of the forms, but they don’t really look like writing to me.
I thought maybe I had just chosen a badly formed alphabet?
So I made some more.
Each row is an alphabet.&lt;/p&gt;

&lt;figure&gt;
&lt;img src=&quot;/assets/IMG_0059.png&quot; alt=&quot;Many asemic alphabets&quot; /&gt;
&lt;figcaption&gt;
These are each alphabets, all generated from the same rules, just different selections.
&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;I made lots of alphabets.&lt;/p&gt;

&lt;figure&gt;
&lt;img src=&quot;/assets/IMG_0058.png&quot; alt=&quot;Many many asemic alphabets&quot; /&gt;
&lt;figcaption&gt;
I made pages and pages of these.
So many I had to come up with an indexing system so I could reference the ones that I wanted.
&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;It’s overwhelming.
It’s not sustainable.
Yet I persistend and picked a few to plot out on small trading cards to get a feel for them.&lt;/p&gt;

&lt;figure&gt;
&lt;img src=&quot;/assets/IMG_4577.png&quot; alt=&quot;a single asemic alphabet&quot; /&gt;
&lt;figcaption&gt;
Just one of the selected alphabets.
This one is the 11th row of page seed 238.
&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;I like these.
A lot of them look like the letter “y”.
They sort of go together, same style.
But maybe that’s a problem.
Not enough to distinguish the different letters.
Also, no sample words to see how they look.&lt;/p&gt;

&lt;p&gt;I sort of lost steam on it at this point when I was last working on it.&lt;/p&gt;

&lt;p&gt;Returning to the ones I made today, I had a different goal, and a different inspiration.
The idea today came from one of the figures in the second edition of the Processing book (p451, if you want to see).
All straight lines.&lt;/p&gt;

&lt;p&gt;In today’s asemic writing, it’s based on a 3x3 grid, and lines are drawn between the points, plus a bit of noise to loosen it up.
There are two types, one doesn’t allow the x or y to be the same- it’s all diagonal.
The other type of letter allows x or y to be the same but not both- vertical and horizontal lines are now allowed but no dots.
This is what’s in the second figure above, that I made with p5js.
Some rows are one letter type, and others are the other.
Each row has it’s own amount of noise.
I played with increasing the noise as the page does down, schotter style, but didn’t like it all that much.&lt;/p&gt;

&lt;p&gt;I’m pretty happy with that p5js output, for half an hour’s effort.
But I’m more of a plotter than a processer, so I translated it into my own python code to generate something similar.
Nominally it should be identical.&lt;/p&gt;

&lt;p&gt;Easier said than done.&lt;/p&gt;

&lt;p&gt;I think I’ll have to do a lot more fiddling to figure out what is different here, and fiddling isn’t all that deterministic of a process.
So instead, I’m going to leave here and stew on what lessons, exactly, I should be learning from this about my own process, and what I think makes good aesemic output.&lt;/p&gt;

&lt;p&gt;Some things for me to think about:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;How can I get the iteration time down even more in my python code and rendering engine. Further friction reduction is needed.&lt;/li&gt;
  &lt;li&gt;What code design decisions can I make to shrink the gap between what I sketch out in p5js vs what I re-implement in my engine? Re-implement is already kind of bleck.&lt;/li&gt;
  &lt;li&gt;Try fewer lines on the current output.&lt;/li&gt;
  &lt;li&gt;Pay closer attention to the feel of the resulting page, there’s not much different between the outputs but one sure looks more like writing than the other. Follow that.&lt;/li&gt;
  &lt;li&gt;Maybe a mix of the diagonal and square lettes in the same word would help?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;‘Till next time.&lt;/p&gt;

&lt;p&gt;And, as usual, see &lt;a href=&quot;https://genuary.art/prompts&quot;&gt;genuary.art&lt;/a&gt; for the rest of the genuary prompts.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>An update on postcards</title>
   <link href="https://www.pentronik.art/2023/01/07/postcards-update"/>
   <updated>2023-01-07T00:00:00-08:00</updated>
   <id>https://www.pentronik.art/2023/01/07/postcards-update</id>
   <content type="html">&lt;p&gt;I finally updated my postcards page with the most recent postcards.
And, I realized I goofed &lt;span class=&quot;emoji&quot;&gt;:sweat_smile:&lt;/span&gt; there are two series008 postcards!
Oops.&lt;/p&gt;

&lt;p&gt;The other thing I realized is that I only did one series of postcards last year.
It must have been really busy with other concerns.&lt;/p&gt;

&lt;p&gt;…&lt;/p&gt;

&lt;p&gt;I actually new that.&lt;/p&gt;

&lt;p&gt;Get the details at &lt;a href=&quot;/series008&quot;&gt;Series008&lt;/a&gt; and &lt;a href=&quot;/series008b&quot;&gt;Series008b&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Genuary 4, Intersections</title>
   <link href="https://www.pentronik.art/2023/01/04/genuary4"/>
   <updated>2023-01-04T00:00:00-08:00</updated>
   <id>https://www.pentronik.art/2023/01/04/genuary4</id>
   <content type="html">&lt;p&gt;Intersections as a prompt is an idea I can get behind.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/IMG_0190.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I thought I would try doing a two color version to really push on the sky/mountains feel I get.
I turns out that aligning fountain pens in the plotter isn’t so easy, so there are some imperfetions.
But I actually don’t mind it. I don’t think I would ship one like this out sight unseen.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/IMG_0193.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Also on &lt;a href=&quot;https://mstdn.social/@pentronik/109632894803574069&quot;&gt;mastodon&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;See &lt;a href=&quot;https://genuary.art/prompts&quot;&gt;genuary.art&lt;/a&gt; for the rest of the prompts.
I’ve been avoiding thinking about future ones, unless I can’t help it (I’m looking at your Moiré).&lt;/p&gt;

&lt;h2 id=&quot;bonus-art&quot;&gt;Bonus art&lt;/h2&gt;

&lt;p&gt;This was my third idea, but it’s pretty plain, so I didn’t post it on Mastodon.
LMK if you think I should have.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/genuary-4-intersections.png&quot; /&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Genuary 3, glitch</title>
   <link href="https://www.pentronik.art/2023/01/03/genuary3"/>
   <updated>2023-01-03T00:00:00-08:00</updated>
   <id>https://www.pentronik.art/2023/01/03/genuary3</id>
   <content type="html">&lt;p&gt;I’m not particularly inspired by glitch, or when I am it has to be a real surprise.
And natural.
So I thought of a few ideas, and decided that they weren’t really “glitch” even if I did like them.
But I didn’t code them; it was a kind of busy day anyway.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/IMG_0188.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Also on &lt;a href=&quot;https://mstdn.social/@pentronik/109628817302147761&quot;&gt;mastodon&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Genuary 2, 10 minutes</title>
   <link href="https://www.pentronik.art/2023/01/02/genuary2"/>
   <updated>2023-01-02T00:00:00-08:00</updated>
   <id>https://www.pentronik.art/2023/01/02/genuary2</id>
   <content type="html">&lt;p&gt;Also on &lt;a href=&quot;https://mstdn.social/@pentronik/109621452816764956&quot;&gt;Mastodon&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I have so many problems with this prompt.
It seems adversarially written to challenge my own modes.
I will not lie and say anything like “and that’s why I like it” because I don’t like it.
I do find it useful to be challenged though.
So, in that spirit I’m going to ignore all those pedantic and other voices and plunge ahead.
Here goes a retracing of my thinking this morning, because I think it will be useful to future me and others who are not me now.&lt;/p&gt;

&lt;p&gt;My first thought was to rebel against the completely unbounded brief here.
And the second was that it has to be something simple.
Cubes are simple.
Maybe this is a chance to go after Mohr’s &lt;a href=&quot;http://www.emohr.com/ww4_out.html&quot;&gt;cubic limits&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/IMG_0179.png&quot; width=&quot;49%&quot; /&gt;
&lt;img src=&quot;/assets/IMG_0180.png&quot; width=&quot;49%&quot; /&gt;&lt;/p&gt;

&lt;p&gt;After a few minutes of jotting on a 3x5 card, I realized that cubes were too ambitious for 10 minutes.&lt;/p&gt;

&lt;p&gt;Let me explicitly spell out the vision for future me, and others.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Start with an &lt;strong&gt;isometric wireframe cube&lt;/strong&gt; and only draw some of the lines.
Arrange a grid of these with fewer and fewer of the lines drawn as the particular cube gets radially further from the center.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sounds simple, right?&lt;/p&gt;

&lt;p&gt;Well, I don’t have enough &lt;a href=&quot;https://p5js.org&quot;&gt;p5js&lt;/a&gt; fluency to do that one in 10 minutes.
I’m not sure I’m fluent in anything enough to do that in 10 minutes.
I discovered this by spending 20 minutes trying to draw just one cube the way I wanted in there.
What even is the coordinate system orientation in 3d P5?
Where is it documented?
I give up.
I descope.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;What about squares in concentric circles?
And only draw the square some of the time.
And draw the circle arc segment when not drawing the square.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can see the general idea in the second picture above.
I spent a few minutes mentally checking that I thought I knew what all I wanted to do, knew the commands, etc.
I set myself a stop watch and figured I’d just keep an eye on it.
This is playing with the spirit of ‘made in 10 minutes’ which I interpret to mean &lt;em&gt;about 10 minutes&lt;/em&gt; or &lt;em&gt;a short amount of time, lets not get carried away here.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/genuary2302-1.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I don’t think I’ll bore you with all the things that I think are wrong with this iteration, but it’s where I got to at about 10 minutes.
At least it’s complete.
The signiture was extra, after the time ran out.&lt;/p&gt;

&lt;p&gt;Quite disatisfied with it, I decided to go another few minutes and at least finish a bit more.
I added some randomness and fixed a flaw that I saw, and styled more to my taste instead of the p5 defaults.
Et voila.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/genuary2302-2.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This was unexpectedly better than I anticipated.
I like that the concentric pattern is visible but also disrupted by the randomness.
There are pockets of phantom concentric groups that go in and out of my vision.
Surprisingly this is easier to see when the extra confusion of truncated squares at the edges are included.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/genuary2302-3.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I’ll come back to cubic limits and circles and squares another time.
That’s all for today.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Genuary 1, loops</title>
   <link href="https://www.pentronik.art/2023/01/01/genuary1"/>
   <updated>2023-01-01T00:00:00-08:00</updated>
   <id>https://www.pentronik.art/2023/01/01/genuary1</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;/assets/2023-01-01-loops.png&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Also at &lt;a href=&quot;https://mstdn.social/@pentronik/109615484436110914&quot;&gt;mstdn.social&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I use genuary as an opportunity to explore something quickly.
This is the opposite of my regular mode of operating.
The way I normally work is to spend time as my schedule allows it, over days and weeks, with one idea.
Mining it, pursuing my interest, and what the idea affords.
Letting things percolate.&lt;/p&gt;

&lt;p&gt;Genuary doesn’t grant that kind of time, which is the point.
Or the point that I take from it.
Last year, I really worked some ideas and demanded of myself that I plot them.
It was too ambitious.
I didn’t have that kind of time.
This year, I have even less of that kind of time.&lt;/p&gt;

&lt;p&gt;When you have less time to do, do less.
But still do.&lt;/p&gt;

&lt;p&gt;So the idea here was to take something that I can apply loops to, and do what I find useful to it.
I’ve been thinking about an idea for a while now and looking for an excuse to test it.
Bite size genuary projects are just the thing for something like this.&lt;/p&gt;

&lt;p&gt;I want closed loops that are kinda periodic-ish but also random.&lt;/p&gt;

&lt;p&gt;:bulb: What if I make a closed path (orbit) and compute the Perlin noise (or open simplex), and use that to mutate the loop?&lt;/p&gt;

&lt;p&gt;There are some other details, but the image above is that.
It’s not exactly what I was hoping for.
It’s cool enough in it’s own right, and I will probably develop it some more at a later date.
And plot it.&lt;/p&gt;

&lt;p&gt;But now I know, and I can see what other options I have for noisy closed loops.
This one may be useful for something.&lt;/p&gt;

&lt;p&gt;I’ve probably overcomplicated it, but there’s no time to go back to it.
Must keep moving.&lt;/p&gt;

&lt;p&gt;[I’ve edited this a few times to clarify what I mean.]&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Plan for the Easy Gaps Hypotheses</title>
   <link href="https://www.pentronik.art/2020/12/24/easy-gaps"/>
   <updated>2020-12-24T00:00:00-08:00</updated>
   <id>https://www.pentronik.art/2020/12/24/easy-gaps</id>
   <content type="html">&lt;p&gt;In the &lt;a href=&quot;/2020/12/23/gaps-hypotheses&quot;&gt;gaps hypotheses&lt;/a&gt; post, I
listed out a bunch of ideas I have for what is causing the dot-or-gap blemishes
when drawing closed loops. Some of the proposals are actually quite easy to
test.  So, for purposes of the scientific method, I will now write out my plan
for testing several of those, and hazard an interpretation of what different
results might mean.&lt;/p&gt;

&lt;h2 id=&quot;method&quot;&gt;Method&lt;/h2&gt;

&lt;p&gt;The test plot shall be a 8x11” page in vertical orientation (long edge is in
the Y-direction). On the page shall be drawn an array of concentric circles up
to 1-inch in diameter. These concentric circles shall be arranged in rows and
columns. Each page that is rendered shall be annotated either automatically or
by hand with a note indicating what is to be tested. The circles will be drawn
such that the pen starts and finishes always at the same angle for all circles.
This angle will be indicated with a line inside the smallest circle.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;// TODO(pentronik): Add an illustration.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;tests&quot;&gt;Tests&lt;/h2&gt;

&lt;p&gt;This plan is for tackling the easiest hypotheses first. These are mostly the
materials related questions.&lt;/p&gt;

&lt;h3 id=&quot;preparations&quot;&gt;Preparations&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Before doing anything, just try to reproduce the issue with the same pen and
 figure that was used previously.  Check out that version of the code and
plot it.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;If the issue reproduces, then the problem is still present. Sync the repo
back to current and see if the plot still works and can still reproduce the
issue. In either case, proceed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;Make the figure described above in Method, and plot it with the same pen
 used in step 0. Check that is reproduces gaps.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;If the issue is present, then the test figure is fit for this purpose. If
not, do not proceed and work on the test figure until it does reproduce the
issue.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;hypotheses&quot;&gt;Hypotheses&lt;/h3&gt;

&lt;ol&gt;
  &lt;li&gt;The problem is the pen is old and weak.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Proposal: Test with a fresh pen. Test with a different pen. I have some
  Isograph technical pens now, so test with those.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If the problem reproduces with a fresh pen that has good flow, it is not
the pen that is at issue here.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol start=&quot;2&quot;&gt;
  &lt;li&gt;The problem is that I am not using the same pen every time and this is
confusing.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Proposal: draw the same sheet several times with the same pen without changing
anything. Do the gaps reproduce identically?&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If the problem persists through all the sheets, then we know that the plotter
is behaving in a very reproducible way, and that the pen has not shifted.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol start=&quot;3&quot;&gt;
  &lt;li&gt;The problem is that I am not putting the pen in the holder consistently.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Proposal: If the previous plot reproduced the issue, try plotting a sheet, and 
then rotating the pen 45º and plotting again.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If the issue goes away for some angle, then it is a pen issue. It may also
be pen specific; I’ll have to find the angle for each pen that avoids this
issue.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;In this post I have laid out the beginnings of checking off some of these
hypothesized reasons for the dots or gaps in the plots, and listed experiments
for testing them. Stay tuned for test results.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Gaps Hypotheses</title>
   <link href="https://www.pentronik.art/2020/12/23/gaps-hypotheses"/>
   <updated>2020-12-23T00:00:00-08:00</updated>
   <id>https://www.pentronik.art/2020/12/23/gaps-hypotheses</id>
   <content type="html">&lt;p&gt;Continuing the &lt;a href=&quot;/2020/09/17/gaps1&quot;&gt;gaps&lt;/a&gt; analysis, in this one I
will list all the ideas that I have thought of, quick reactions, and
alternatives. It will likely turn into a sort of table of contents. Right, so
the hypotheses!&lt;/p&gt;

&lt;p&gt;First is the list after organizing it into groups of related issues. Below that
is the original raw list.&lt;/p&gt;

&lt;h2 id=&quot;organized-list&quot;&gt;Organized list&lt;/h2&gt;

&lt;h3 id=&quot;motion-related&quot;&gt;Motion related&lt;/h3&gt;

&lt;p&gt;Issues related to the motion of the pen that is either due to my own
programming or due to lack of understanding of motion library. It is also
possible that there is a bug in that library.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;The problem is not being careful about the placement of the end of the loop.&lt;/li&gt;
  &lt;li&gt;The problem is the pen is picking up too early.&lt;/li&gt;
  &lt;li&gt;The problem is &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;const_speed&lt;/code&gt; is affecting the precision.&lt;/li&gt;
  &lt;li&gt;The problem is the pen speed is too high, which results in lower precision.&lt;/li&gt;
  &lt;li&gt;The problem is with the way I have programmed the motion. The second to last
step may be very small, and the final step is larger. There may be some
problem here.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;mechanical-issues&quot;&gt;Mechanical issues&lt;/h3&gt;

&lt;p&gt;Issues related to the mechanics of the plotter.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;The problem is that the main rail is warped by the clamps that I have used
to keep the machine in the same place.&lt;/li&gt;
  &lt;li&gt;The problem is that the pen motion plain is not parallel to the paper
surface.  This could be caused by the rail warping, or it could be the pen
in the holder, or the metal plate is warped.&lt;/li&gt;
  &lt;li&gt;The problem is that the Y-arm is loose.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;materials&quot;&gt;Materials&lt;/h3&gt;

&lt;p&gt;Potential issues related to the materials that I am using.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;The problem is that the pen is old and weak.&lt;/li&gt;
  &lt;li&gt;The problem is that I am not using the same pen every time and this is
confusing.&lt;/li&gt;
  &lt;li&gt;The problem is that I am not putting the pin in the holder consistently.&lt;/li&gt;
  &lt;li&gt;The problem is that the paper is not as absorbent as needed, and this makes
it difficult to lay down the last bit of ink.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;mitigations&quot;&gt;Mitigations&lt;/h3&gt;

&lt;p&gt;Thoughts on what might be done if the issue is not resolved. Let’s hope it
doesn’t come to this.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Simply do not close the loops, so it doesn’t show this problem.&lt;/li&gt;
  &lt;li&gt;Overwrite the loops more than once so that the dots are not as evident.&lt;/li&gt;
  &lt;li&gt;Hide the dots under overwritten lines; draw lines over the dots as part of
the design.&lt;/li&gt;
  &lt;li&gt;Leave it be, this is one of the things that makes plotted drawings special.
I don’t totally agree.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;raw-list&quot;&gt;Raw list&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;First&lt;/strong&gt; hypothesis was an extension of what I talked about &lt;a href=&quot;/2020/09/17/gaps1&quot;&gt;last time&lt;/a&gt;.  Basically to put the last point at a precise
distance from the start mark.  This has been my working hypothesis for a while,
but it can’t be the only thing; the gaps do not occur consistently.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Second&lt;/strong&gt; hypothesis is that the pen is picking up too early and then moving
away. It is not precisely hitting the mark.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Third&lt;/strong&gt; hypothesis is that the long rail is being slightly distorted (warped)
by the way that I have clamped it to the table. This seems really unlikely,
it’s very rigid and the “table” is actually just a piece of plywood. I mean
obviously there is some equilibrium between the board and the rail, but come
on. Easy to test: just remove the clamps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fourth&lt;/strong&gt; hypothesis is that the pen arm and the drawing surface are not
parallel.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fifth&lt;/strong&gt; hypothesis is that the pen is getting old and weak, and even if the
pen was in the right place, it may not be leaving ink. There are several
variations here. Also easy to test: get a different pen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5B&lt;/strong&gt;: Different papers absorb ink differently, so it’s not a problem on my HP
paper, but it is a problem on the Bristol paper I am using. Easy to test: try
with a few different papers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5C&lt;/strong&gt;: I have not been careful about which pen I have been using. There are
several practically identical pens. I have intended to use the same pen,
and have tried to be consistent. But I always have doubt. Perhaps if I use
stickers to be sure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sixth&lt;/strong&gt; hypothesis is that &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;const_speed&lt;/code&gt; is somehow interfering with fine
(small) precise motions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6B&lt;/strong&gt;: is a variation: the small motions aren’t the last step, but the second
to last step. This ties in with the first one, and I’ll elaborate on it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6C&lt;/strong&gt;: Faster motions are less precise, so reducing speed may help.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Seventh&lt;/strong&gt; alternative is that the dots are obvious because the ink isn’t thick
enough, so the bit that is overwritten stands out. Maybe draw slower so more ink
can flow, or overwrite more than once.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Eighth&lt;/strong&gt; alternative is to just not close the loops. Instead of a constant
\(A\), I could make it a slowly increasing function of \(\theta\) such that
it increases in radius just as the current function does.  This could be
interesting, but doesn’t solve my actual problem which may crop up later when I
need lines to meet precisely.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ninth&lt;/strong&gt; alternative is to hide the dots under other crossing lines. Not
always possible though.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Out, damned spot! A prelude</title>
   <link href="https://www.pentronik.art/2020/09/17/gaps1"/>
   <updated>2020-09-17T00:00:00-07:00</updated>
   <id>https://www.pentronik.art/2020/09/17/gaps1</id>
   <content type="html">&lt;p&gt;It all started with some little dark dots. See the photograph below. They
happened to be in a line, and as such, they were very obvious. What follows is
(planned to be) a series of blog posts about my unravelling of the trouble I
got into trying to solve this issue.  Assuming that I do solve this issue to my
own satisfaction.  The reason for this to be a series of posts is that I’ll try
to keep each post focussed. To see them all together, see the
&lt;a href=&quot;/tag/out-damned-spot/&quot;&gt;#out-damned-spot&lt;/a&gt; tag page. You could think of it like
a logbook, but I don’t promise to not edit it for clarity as I understand more.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/assets/IMG_3192.jpg&quot; alt=&quot;Those damn spots.&quot; /&gt;
&lt;figcaption&gt;The small marks are from overwriting the same point. Stopping this
artifact from appearing in my works has been quite a bit more tricky than I
imagined it would be.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;In this post, I will describe the original issue, and document as best as I can
recollect all the other things that were going on. Luckily I can verify most of
this if I desire or need to.&lt;sup id=&quot;fnref:1&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:1&quot; class=&quot;footnote&quot;&gt;1&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Frame of mind: I wanted a bit more speed after my experience with Series002
postcards. The problem there was the text, but I was starting to explore
other aspects of increasing speed. See also the &lt;a href=&quot;/2020/08/23/fast-circles-pt1&quot;&gt;first post&lt;/a&gt; about faster circles.&lt;/li&gt;
  &lt;li&gt;I’ve been meaning to add a bit more instrumentation to my code, so there is
that. To track number of moves and line segments, pen up and pen down
actuations, length of lines and moves.&lt;/li&gt;
  &lt;li&gt;Things that I have changed since: trying out setting &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;const_speed&lt;/code&gt;, raising
the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;pen_pos_down&lt;/code&gt; value, upping the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;speed_pendown&lt;/code&gt; a bit.&lt;/li&gt;
  &lt;li&gt;Working up to Series003 postcards, so searching for something nice to put on
them. See the picture above for the idea that I’ve settled on. But they’ve
got to be &lt;em&gt;perfect&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So the basic form of these things for Series003 is&lt;/p&gt;

\[\begin{eqnarray}
x(n) &amp;amp;=&amp;amp; A \cos\left(2 \pi \frac{n}{N}\right) + B \cos\left(m 2 \pi \frac{n}{N} + \phi\right)\\
y(n) &amp;amp;=&amp;amp; A \sin\left(2 \pi \frac{n}{N}\right) + B \sin\left(m 2 \pi \frac{n}{N} + \phi\right).\end{eqnarray}\]

&lt;p&gt;Lets call the thing in the parentheses \(\theta = 2\pi n / N\) for now. I
choose \(A\) to be the larger value and \(B\) to be a few percent of
\(A\), more of a perturbation on top of the circle. These formulae are used
in code more or less like this:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;draw_a_circle&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;center_x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;center_y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;moveto&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;center_x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;center_y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;n&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;N&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;lineto&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;center_x&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;x&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;center_y&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;n&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This means that the point at \(\theta=0\) is touched by the pen, and so is
again \(\theta=2\pi\). So the obvious solution would be to only do the range
for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;range(1, N)&lt;/code&gt; instead of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;range(1, N+1)&lt;/code&gt;. To be clear &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;range&lt;/code&gt; will produce
a bunch of numbers up to but not including the value in the second position as
I’ve written it here.&lt;/p&gt;

&lt;p&gt;But, how to pick \(N\), the number of steps to draw the curve smoothly?&lt;/p&gt;

&lt;p&gt;Well, being lazy, I am just using circumference of the bigger circle (the \(A
\sin\) term) to approximate the length of the line \(L\). Properly, I should
do the integral, and it’s not even and especially difficult one. Like I said:
lazy.&lt;sup id=&quot;fnref:3&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:3&quot; class=&quot;footnote&quot;&gt;2&lt;/a&gt;&lt;/sup&gt; If I want the step size to be approximately 1 mm, as found in the
&lt;a href=&quot;/2020/08/23/fast-circles-pt1&quot;&gt;fast circles pt 1&lt;/a&gt; post,
then that means there should be&lt;/p&gt;

\[N = 2\pi \frac{A}{1\; \text{mm}} + f(B),\]

&lt;p&gt;for now we drop the \(f(B)\) term. And I know it’s a grave offence to mix
units, but a 1 inch radius circle is something like&lt;/p&gt;

\[N = 2 \pi \frac{25.4\, \text{mm}}{1\; \text{mm}} = 160\; \text{steps}.\]

&lt;p&gt;So removing that 1 step at the end could leave at minimum a 1 mm gap at the end
(because for sure \(L &amp;gt; 2 \pi A\) unless \(B = 0\)).&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;figure&gt;&lt;img src=&quot;/assets/IMG_2839.jpg&quot; alt=&quot;Those damn gaps.&quot; /&gt;
&lt;figcaption&gt;Now I've got a new problem.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;Gah! The absence of dots is more like a negative dot!&lt;sup id=&quot;fnref:2&quot; role=&quot;doc-noteref&quot;&gt;&lt;a href=&quot;#fn:2&quot; class=&quot;footnote&quot;&gt;3&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;

&lt;p&gt;That’s enough for now, so I can continue tomorrow. Lot’s more to mention. If
you have thoughts, comments or questions, find me on Twitter @pentronik.&lt;/p&gt;

&lt;hr /&gt;

&lt;div class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
  &lt;ol&gt;
    &lt;li id=&quot;fn:1&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;This is because I regularly check in code changes and frequently label work with the most recent hash of the check-in, automatically. Occasionally I disable this feature in the interest of plotting speed. I regret this decision later. &lt;a href=&quot;#fnref:1&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:3&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;But also it’s not that simple. The function doesn’t make uniform length shooting steps. Said another way: \(d r/d \theta\) is not a constant, if you accept that \(r = (x, y)\). I think I will probably tackle all of this at some point. &lt;a href=&quot;#fnref:3&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
    &lt;li id=&quot;fn:2&quot; role=&quot;doc-endnote&quot;&gt;
      &lt;p&gt;I am not, in fact, drawing on a brown paper bag. The lighting is bad. I hope you can forgive this sin too. &lt;a href=&quot;#fnref:2&quot; class=&quot;reversefootnote&quot; role=&quot;doc-backlink&quot;&gt;&amp;#8617;&lt;/a&gt;&lt;/p&gt;
    &lt;/li&gt;
  &lt;/ol&gt;
&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>August '20 Retrospective</title>
   <link href="https://www.pentronik.art/2020/08/31/august-retrospective"/>
   <updated>2020-08-31T16:59:59-07:00</updated>
   <id>https://www.pentronik.art/2020/08/31/august-retrospective</id>
   <content type="html">&lt;p&gt;What a month, eh? The hits in 2020 keep on coming. Try to take care of yourselves
out there in the wide world. :grimacing: :upside_down_face:&lt;/p&gt;

&lt;h3 id=&quot;updates&quot;&gt;Updates&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Added a &lt;a href=&quot;/now&quot;&gt;now&lt;/a&gt; page. It’s target audience is
actually me. But if you get anything out of it, so much the better.&lt;/li&gt;
  &lt;li&gt;Sent out the &lt;a href=&quot;% link _pages/postcards/series002.md %}&quot;&gt;Series002&lt;/a&gt; postcards.
Woohoo! Very happy to see many of them arriving. :postbox: :mailbox_with_mail:&lt;/li&gt;
  &lt;li&gt;Started building this website. So that’s a thing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;new-books&quot;&gt;New Books&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;em&gt;High-resolution Computer Graphics Using FORTRAN 77&lt;/em&gt;, &lt;a class=&quot;citation&quot; href=&quot;#angell1987high&quot;&gt;(Angell and Griffith)&lt;/a&gt;: I’m quite thrilled with this book. Especially because the Fortran 77
version is ~5$, but the C++ version is a couple of hundred. I may have never
compiled any Fortran code before, but that doesn’t mean I can’t read it and
translate it into whatever language I happen to be working with.  Thanks for
the &lt;a href=&quot;https://twitter.com/anachrocomputer/status/1289122327347765248&quot;&gt;tip&lt;/a&gt;
@anachrocomputer!&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;Computer geometric art&lt;/em&gt;, &lt;a class=&quot;citation&quot; href=&quot;#angell1985computer&quot;&gt;(Angell)&lt;/a&gt;: Not impressed.&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;Fractals: Form, Chance, and Dimension&lt;/em&gt;, &lt;a class=&quot;citation&quot; href=&quot;#mandelbrot2020fractals&quot;&gt;(Mandelbrot)&lt;/a&gt;:
It’s an earlier version of “The Fractal Geometry of Nature”, which I didn’t
realize. But the variation in explanation of some concepts is detectable and
may actually be useful. Glad it was a very affordable price, so I’ll keep them
both. But you probably only need one.&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;Perspective drawing by programmable calculator&lt;/em&gt;, &lt;a class=&quot;citation&quot; href=&quot;#yue1984perspective&quot;&gt;(Yue)&lt;/a&gt;: A
&lt;a href=&quot;https://twitter.com/johnbalestrieri/status/1289001951120822274&quot;&gt;recommendation&lt;/a&gt;
of @johnbalestrieri, looks interesting and I think it will be useful. Looking
forward to spending more time with it.&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;Mathematical Carnival: From Penny Puzzles, Card Shuffles and Tricks of
Lightning Calculators to Roller Coaster Rides Into the Fourth Dimension&lt;/em&gt;, &lt;a class=&quot;citation&quot; href=&quot;#gardner1975mathematical&quot;&gt;(Gardner)&lt;/a&gt;: Seems like a fun idea. It’s a reference in the
first Angell book.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;links&quot;&gt;Links&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://fractalcurves.com/&quot;&gt;Fractal Curves&lt;/a&gt;. The pdf books on this site are
great. I found this link a long time ago, then lost it. Glad to have found
it again.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://casual-effects.com/markdeep/&quot;&gt;Markdeep&lt;/a&gt;. Looks like an interesting
alternative to plain old markdown. It includes a lot of the technical tools
that I often want to add anyway.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://apps.apple.com/us/app/the-graphics-codex/id494971103&quot;&gt;The Graphics Codex&lt;/a&gt;.
May be handy someday, but I’ll pass for now.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://oeis.org/&quot;&gt;The Online Encyclopedia of Integer Sequences&lt;/a&gt;. Someone
linked the book in a tweet, but it’s a couple of hundred dollars. Turns out
the author maintains a website! Searching is a bit clunky.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.websters1913.com/&quot;&gt;Websters 1913&lt;/a&gt;. You may not know it, but I
also am a lover of words and writing. This is super handy.
&lt;a href=&quot;https://johnsonsdictionaryonline.com/&quot;&gt;Johnson’s&lt;/a&gt; is also great for a
historical perspective.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://advances.sciencemag.org/&quot;&gt;Science Advances&lt;/a&gt;. The latest news.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://neilkakkar.com/Bayes-Theorem-Framework-for-Critical-Thinking.html&quot;&gt;Bayes Theorem: A framework for critical
thinking&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://tavolamediterranea.com/2019/08/30/baking-with-the-romans-the-key-ingredients-poppy-seed-fennel-and-parsley/&quot;&gt;Roman Bread
Recipe!&lt;/a&gt;.
I haven’t made it yet. I also bake!&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/jesseduffield/horcrux&quot;&gt;Horcrux&lt;/a&gt;. I might use it as a post
card puzzle in October. Depends on how long the resulting text is.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://sliderulemuseum.com/SR_Course.htm&quot;&gt;Slide Rule course&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/kahun/awesome-sysadmin&quot;&gt;Awesome sys admin resources&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://pcpartpicker.com/&quot;&gt;Pc Part Picker&lt;/a&gt; and &lt;a href=&quot;https://www.logicalincrements.com/&quot;&gt;Logical
Increments&lt;/a&gt;. I recently decided to add a
graphics card to a PC build that my wife and I put together some time ago. It’s
not for gaming, it’s for making more art faster, with math! So I wanted to
evaluate if I really needed anything beyond a 1050 Ti. Since I have no idea
what I am doing, I decided that the 1050 would be adequate for starting, so
that’s what I got. When I outgrow it, I’ll need these sites again.&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>The Connected Perimeter</title>
   <link href="https://www.pentronik.art/2020/08/30/connected"/>
   <updated>2020-08-30T15:00:00-07:00</updated>
   <id>https://www.pentronik.art/2020/08/30/connected</id>
   <content type="html">&lt;figure&gt;&lt;img src=&quot;/assets/connected.svg&quot; alt=&quot;Connected points&quot; /&gt;&lt;/figure&gt;

&lt;blockquote&gt;
  &lt;p&gt;It is now time to consider some more attractive examples to illustrate
how, even with only a beginner’s knowledge of computer graphics, it is
still possible to draw aesthetically pleasing patterns.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This was fun, and frustrating. Here are my thoughts about working on Exercise
1.8 in &lt;a class=&quot;citation&quot; href=&quot;#angell1987high&quot;&gt;(Angell and Griffith, p.17)&lt;/a&gt;.  Get the above file at
&lt;a href=&quot;https://plotterfiles.com/profile/files/c0cefdcf-4aeb-4687-906d-b57745eaf4ab&quot;&gt;PlotterFiles&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The objective is to connect all the N points around the perimeter of a circle.
The book has a nice listing of the program that draws the figure.  And then
points out that “if you are using a pen plotter then [the] listing … is not
a very efficient way of drawing the pattern.” The next problem (1.9) describes
a method referencing the
&lt;a href=&quot;https://en.wikipedia.org/wiki/Fibonacci_number&quot;&gt;Fibonocci&lt;/a&gt; sequence as a way
of connecting the points around the perimeter of a square.&lt;/p&gt;

&lt;p&gt;Well, I chased that for a while and it really seems to have been a red herring.
Or too clever for me. Although I’m really not sure how it connects all the
points on a circle when the sequence skips a larger and larger group of
numbers as it goes on.&lt;/p&gt;

&lt;p&gt;It also distracted me from the relatively simple modification to the listing
needed to greatly shorten the trajectory of the pen in the plotter. Here is my
pseudo-code of my solution.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-pseudocode&quot; data-lang=&quot;pseudocode&quot;&gt;For each jump in the range 1 to N-1.
  Go to the point on the perimeter with index 0.
  Draw a line skipping points according to jump.
  Count the lines drawn to ensure they are all drawn.
  If the jump divides evenly into N, when the turtle comes around to the start
    point, move to the next point and continue jumping until back to that point.
    Keep doing that until the number of jumps is equal to N.
  If the next jump lands back on the point that it just came from (all the way
    across, back over the line just drawn for evan N).&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;You can see the output of the book’s listing, for N=30, in the first tweet (on
HP paper).  The paper is excellent printer paper, but not up to the task of
being hit with a pen in the same place 30 times. It gets pretty roughed up.&lt;/p&gt;

&lt;p&gt;I’ll note also that using this algorithm and stopping early has some nice
potential for other shapes.&lt;/p&gt;

&lt;div class=&quot;jekyll-twitter-plugin&quot;&gt;&lt;p&gt;There was a 'Forbidden' error fetching URL: 'https://twitter.com/pentronik/status/1300198873739091968'&lt;/p&gt;&lt;/div&gt;

&lt;p&gt;The second tweet has the results of my code (based on the pseudo-code above).
It is on the back of some Strathmore 300 series Bristol. It handles it better,
and also there is a lot less pick up and put down of the pen. But still, the
surface is not perfect. It is the edge points that suffer the most, the central
point which also is crossed 30 times isn’t so bad looking.&lt;/p&gt;

&lt;p&gt;I would have to say my favorite bits of this are around the central point, and
the “eggs” fourth ring from the center.  Overall, I quite like it, it’s nice
that such a pleasing thing is “easily” accessible.  Really looking forward
to learning some more things from this book.&lt;/p&gt;

&lt;h4 id=&quot;improvements&quot;&gt;Improvements&lt;/h4&gt;

&lt;p&gt;While my solution is quite a bit shorter in travel distance than the original
listing, I don’t think it quite makes it to the full 50% reduction. I’ll update
with some measurements when I get a chance. I have identified some some further
improvements that could be made, if necessary, at a later date.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;In my implementation, there are unnecessary pen up/down steps. This is the
pen moving to the start point. It’s already at the start point. I am too
pig-headed to do the simple thing and check that the x,y location is at the
start point. I would rather check it by indices or something else, and ran
out of steam to figure that out this afternoon.&lt;/li&gt;
  &lt;li&gt;Probably fairly easy is fact that for the directly across points, it still
does travel all the way back across the circle, and the over one point. I
really wanted it to go to the next point and draw the line back. Why are even
numbers so hard?&lt;/li&gt;
  &lt;li&gt;The hardest one. There are unnecessary moves back to the start point. For the
circle, at least, the figure is rotationally symmetric. The turtle doesn’t
need to move back to the start point. Instead it could use that rotational
symmetry to advantage and pick up one of the other jumps. The difficulty with
this is the necessary bookkeeping to ensure that all points are visited for
all jumps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is not clear that all these features are necessary or will even work if I
want to generalize to perimeters of other convex polygons. And draw points
along the perimeter of the polygon not equal to or even with the number of
vertices of the polygon, and not overdraw the sides of the polygon.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Circles: Good &lt;em&gt;and&lt;/em&gt; Fast, Part 1</title>
   <link href="https://www.pentronik.art/2020/08/23/fast-circles-pt1"/>
   <updated>2020-08-23T12:30:00-07:00</updated>
   <id>https://www.pentronik.art/2020/08/23/fast-circles-pt1</id>
   <content type="html">&lt;figure&gt;&lt;img src=&quot;/assets/20200822-circles-1.png&quot; alt=&quot;Photograph of circle.&quot; /&gt;&lt;/figure&gt;

&lt;p&gt;After making the Series002 postcards I realized that I was going to have to
optimize some speeds to get more ambitious plots done in a reasonable time. For
those plots, which were all straight lines, the front of a sheet of 4 postcards
(the art side), took about 15 minutes to plot. Not bad.  The back, which was
basically all text (maybe too much text), took over an hour to plot. This is
too slow.&lt;/p&gt;

&lt;p&gt;Now, you might think I should start by making text plot faster. You might be
right about that. But I want a laboratory to study first. I happen to know that
when I first added my circle drawing code for the Series001 postcards, I just
picked a step size that I &lt;em&gt;knew&lt;/em&gt; would be good enough to make nice round
circles (see above, for example).  It’s a perfect thing to optimize.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;b&gt;Note:&lt;/b&gt; Circles, and curves, are not in fact smooth curves when
plotted. They are many small straight lines. A circle is drawn as a
regular polygon with many (many-many) sides.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Maybe next I’ll do squares, or regular polygons with O(10) sides or fewer. I
think there will be plenty to learn with this subject.&lt;/p&gt;

&lt;h2 id=&quot;the-situation&quot;&gt;The Situation&lt;/h2&gt;

&lt;p&gt;Lets start with some basics. A) I just got &lt;a href=&quot;https://shop.evilmadscientist.com/908&quot;&gt;this
plotter&lt;/a&gt; a month ago. I love it.  But,
B) I have no real idea what I am doing. C) I want to do everything myself, for
reasons, so I am only doing things via the python API directly in &lt;a href=&quot;https://axidraw.com/doc/py_api/#quick-start-interactive-xy&quot;&gt;interactive
mode&lt;/a&gt;.  So, some of
these first assumptions may be wrong to begin with. But this is about
exploring. These are the initial settings:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;n&quot;&gt;speed_pendown&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;I don’t know why I set the pen down speed to 20. What even are the units?
According to the &lt;a href=&quot;https://axidraw.com/doc/py_api/#speed_pendown&quot;&gt;API docs&lt;/a&gt;,
it’s expressed as a percentage of the maximum travel speed. What is the maximum
travel speed? And the default is 25, so my value is only 5% less than the
default.&lt;/p&gt;

&lt;p&gt;For future reference, here are all the values in the AxiDraw.options attribute:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;'ids'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[],&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'selected_nodes'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[],&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'speed_pendown'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;20&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'speed_penup'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;75&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'accel'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;75&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'pen_pos_down'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;30&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'pen_pos_up'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;60&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'pen_rate_lower'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;50&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'pen_rate_raise'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;75&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'pen_delay_down'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'pen_delay_up'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'no_rotate'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'const_speed'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'report_time'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'page_delay'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;15&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'preview'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;False&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'rendering'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'model'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'port'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;None&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'setup_type'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'align'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'resume_type'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'plot'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'auto_rotate'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;bp&quot;&gt;True&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'reordering'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'resolution'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'mode'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'interactive'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'manual_cmd'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;'fw_version'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'walk_dist'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'layer'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'copies'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'port_config'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
&lt;span class=&quot;s&quot;&gt;'units'&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Below is also a listing of my circle drawing code.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;math&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;loguru&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;logger&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;from&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;pyaxidraw&lt;/span&gt; &lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;axidraw&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;axi&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;axidraw&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;AxiDraw&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;circle_edge_pt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x_coord&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y_coord&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;radius&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;theta&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;s&quot;&gt;&quot;&quot;&quot;Get a point along the perimeter of a circle.&quot;&quot;&quot;&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x_coord&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;radius&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;sin&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;theta&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;y_coord&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;radius&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;cos&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;theta&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;

&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;draw_arc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;axi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
             &lt;span class=&quot;n&quot;&gt;x_coord&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
             &lt;span class=&quot;n&quot;&gt;y_coord&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
             &lt;span class=&quot;n&quot;&gt;radius&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
             &lt;span class=&quot;n&quot;&gt;theta0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
             &lt;span class=&quot;n&quot;&gt;total_theta&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
             &lt;span class=&quot;n&quot;&gt;step_distance&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;0.01&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
    &lt;span class=&quot;s&quot;&gt;&quot;&quot;&quot;Draw a perfect circle.&quot;&quot;&quot;&lt;/span&gt;
    &lt;span class=&quot;c1&quot;&gt;# pylint: disable=too-many-arguments
&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;logger&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;trace&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;f&quot;Drawing arc at &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x_coord&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;y_coord&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;, &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;theta0&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; : &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;total_theta&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;.&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;step_size&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;step_distance&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;radius&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;axi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;moveto&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
        &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;circle_edge_pt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x_coord&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y_coord&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;radius&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;theta0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;range&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;int&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;total_theta&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;/&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;step_size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;point&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;CircleTools&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;circle_edge_pt&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x_coord&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;y_coord&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;radius&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
                                           &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;theta0&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;step_size&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;axi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lineto&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;*&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;point&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Some things to say about this code. The shooting step size (listed as
&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;step_distance&lt;/code&gt; above) is 0.01 inches, or 0.254 mm.&lt;/p&gt;

&lt;h2 id=&quot;measuring-current-speed&quot;&gt;Measuring Current Speed&lt;/h2&gt;

&lt;p&gt;With the above in hand, lets measure how much time it takes to draw some
circles. I’ve never really measured this before in python, so I’m going to
search for some guidance. &lt;a href=&quot;https://realpython.com/python-timer/&quot;&gt;This&lt;/a&gt; article
looks pretty promising.  Just doing the basics, using the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;time.perf_counter&lt;/code&gt;
function to do some tic/toc style measuring looks like it will get us started.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;math&lt;/span&gt;
&lt;span class=&quot;kn&quot;&gt;import&lt;/span&gt; &lt;span class=&quot;nn&quot;&gt;time&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;radius&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mf&quot;&gt;0.5&lt;/span&gt;  &lt;span class=&quot;c1&quot;&gt;# inches.
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;tic&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;perf_counter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;draw_arc&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;axi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;radius&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;toc&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;time&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;perf_counter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;f&quot;time to draw a &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;radius&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; inch &quot;&lt;/span&gt;
      &lt;span class=&quot;s&quot;&gt;f&quot;diameter circle was &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;toc&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;tic&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;0.1&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; seconds&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;f&quot;total line length was &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;radius&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;*&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;math&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;pi&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;0.2&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;f&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s&quot;&gt; inches&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;time to draw a 1.0 inch diameter circle was 23.8 seconds
total line length was 3.14 inches&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;I measured a value of 23.8 seconds to draw a 3.14 inch long line, or 0.13
inches / second (3.3 mm/s).  This is rather slow. I think we can do a lot better.
Incidentally, to draw that circle, the code above made 1257 individual moves.
That’s a lot of moves. But it is a very nice circle.&lt;/p&gt;

&lt;figure&gt; &lt;img src=&quot;/assets/20200822-circles-1.png&quot; alt=&quot;Photograph of circle.&quot; /&gt; &lt;figcaption&gt;Picture of the circle drawn with the
starting settings. Note that it is really a 1257 sided polygon.
&lt;a href=&quot;/assets/20200822-circles-big-1.png&quot;&gt;Bigger version.&lt;/a&gt;
&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;My hope is that I can get a circle basically as good but in a fraction of the
time.  I’m not sure what is achievable, but I set an arbitrary goal of one
tenth of the original time, or 2.3 seconds. My immediate reaction is that this
is wildly ambitious. First, let’s make a plan, and always re-evaluate if this is
reasonable.&lt;/p&gt;

&lt;h2 id=&quot;the-plan&quot;&gt;The plan&lt;/h2&gt;

&lt;p&gt;OK, so I had a moment to think and I realized that there is more to drawing
circles than just moving the pen around. Ink must flow out of the pen as well.
Maybe we can draw the circle in 2.3 seconds, but with one pen we’ll get a nice
solid line and another will give something much less nice. But anyway, here is
what we’re going to do:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Increase the step shooting distance (the step size)&lt;/li&gt;
  &lt;li&gt;Change the pen down speed (how fast it draws the line)&lt;/li&gt;
  &lt;li&gt;The end point may in fact be too far, so examine that too (don’t draw more
circle than necessary)&lt;/li&gt;
  &lt;li&gt;Verify that the circles are still good (that is, still circular)&lt;/li&gt;
  &lt;li&gt;Circle back, ahem, to the issue of pen down speed to address the ink flow&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So there it is, that’s the plan. Let’s do it.&lt;/p&gt;

&lt;h3 id=&quot;step-1-increase-the-shooting-distance&quot;&gt;Step 1: Increase the shooting distance&lt;/h3&gt;

&lt;p&gt;So this is a simple one. The basic idea is to draw circles varying the step
size and observe a few things. Here is the recipe.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Draw 1 inch diameter circles, starting with 3 mm steps, down to 0.25 mm.&lt;/li&gt;
  &lt;li&gt;Measure how long it takes to draw each circle, and the total line length.&lt;/li&gt;
  &lt;li&gt;View the circles closely to see how well they appear circular.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Below is an SVG of the file that will be drawn. Later down, there is a picture
of the plotted page.&lt;/p&gt;

&lt;figure&gt;
  &lt;img style=&quot;background: #F8F8F8;&quot; src=&quot;/assets/2020-08-22-circle-tests.svg&quot; alt=&quot;Pre-render of the plot.&quot; /&gt;
  &lt;figcaption&gt;The test plot, an SVG file that you can download if you want to. It shows the whole 8.5 x 11 page.&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;p&gt;I plotted the file twice and collected the data. The result is reproduced
below.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Trial 1&lt;/em&gt;:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;shooting distance (mm)&lt;/th&gt;
      &lt;th&gt;run time (s)&lt;/th&gt;
      &lt;th&gt;total distance (mm)&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;3.00&lt;/td&gt;
      &lt;td&gt;4.5&lt;/td&gt;
      &lt;td&gt;162.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;2.75&lt;/td&gt;
      &lt;td&gt;9.3&lt;/td&gt;
      &lt;td&gt;165.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;2.50&lt;/td&gt;
      &lt;td&gt;9.0&lt;/td&gt;
      &lt;td&gt;160.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;2.25&lt;/td&gt;
      &lt;td&gt;9.2&lt;/td&gt;
      &lt;td&gt;162.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;2.00&lt;/td&gt;
      &lt;td&gt;9.1&lt;/td&gt;
      &lt;td&gt;160.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;1.75&lt;/td&gt;
      &lt;td&gt;9.5&lt;/td&gt;
      &lt;td&gt;161.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;1.50&lt;/td&gt;
      &lt;td&gt;11.0&lt;/td&gt;
      &lt;td&gt;162.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;1.25&lt;/td&gt;
      &lt;td&gt;11.0&lt;/td&gt;
      &lt;td&gt;160.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;1.00&lt;/td&gt;
      &lt;td&gt;12.3&lt;/td&gt;
      &lt;td&gt;160.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;0.75&lt;/td&gt;
      &lt;td&gt;14.1&lt;/td&gt;
      &lt;td&gt;160.50&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;0.50&lt;/td&gt;
      &lt;td&gt;17.1&lt;/td&gt;
      &lt;td&gt;160.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;0.25&lt;/td&gt;
      &lt;td&gt;23.8&lt;/td&gt;
      &lt;td&gt;160.00&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;em&gt;Trial 2&lt;/em&gt;:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;shooting distance (mm)&lt;/th&gt;
      &lt;th&gt;run time (s)&lt;/th&gt;
      &lt;th&gt;total distance (mm)&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;3.00&lt;/td&gt;
      &lt;td&gt;4.5&lt;/td&gt;
      &lt;td&gt;162.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;2.75&lt;/td&gt;
      &lt;td&gt;9.3&lt;/td&gt;
      &lt;td&gt;165.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;2.50&lt;/td&gt;
      &lt;td&gt;9.0&lt;/td&gt;
      &lt;td&gt;160.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;2.25&lt;/td&gt;
      &lt;td&gt;9.1&lt;/td&gt;
      &lt;td&gt;162.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;2.00&lt;/td&gt;
      &lt;td&gt;9.0&lt;/td&gt;
      &lt;td&gt;160.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;1.75&lt;/td&gt;
      &lt;td&gt;9.5&lt;/td&gt;
      &lt;td&gt;161.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;1.50&lt;/td&gt;
      &lt;td&gt;11.0&lt;/td&gt;
      &lt;td&gt;162.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;1.25&lt;/td&gt;
      &lt;td&gt;11.0&lt;/td&gt;
      &lt;td&gt;160.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;1.00&lt;/td&gt;
      &lt;td&gt;12.3&lt;/td&gt;
      &lt;td&gt;160.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;0.75&lt;/td&gt;
      &lt;td&gt;14.1&lt;/td&gt;
      &lt;td&gt;160.50&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;0.50&lt;/td&gt;
      &lt;td&gt;17.1&lt;/td&gt;
      &lt;td&gt;160.00&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;0.25&lt;/td&gt;
      &lt;td&gt;23.8&lt;/td&gt;
      &lt;td&gt;160.00&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;It’s easier to see in graphical form.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;figure&gt; &lt;img src=&quot;/assets/2020-08-22-trials12.png&quot; alt=&quot;Graphs of experimental data.&quot; /&gt;
&lt;figcaption&gt;Data collected for the run time and total line
distance drawn for two trials. The top figure shows the time to draw one circle
vs the step size.  The bottom figure shows the expected drawn line distance.
For convenience there is a blue line drawn for the correct length of the
circle's circumference.&lt;/figcaption&gt; &lt;/figure&gt;

&lt;figure&gt; &lt;img src=&quot;/assets/20200822-circles-2.png&quot; alt=&quot;Photograph of resulting plots.&quot; /&gt;&lt;figcaption&gt;Photograph of the resulting
plot. Here is a MUCH bigger version. Note that there are the two trials on the
same page. It's been hand annotated with the shooting sizes, and a few other
marks were added by an independent observer to indicate other issues with
focusing on. Also note that the first trial was drawn, then the page was rotate
180&amp;deg; and the second trial was plotted.
&lt;a href=&quot;/assets/20200822-circles-big-2.png&quot;&gt;Really bigger version.&lt;/a&gt;
&lt;/figcaption&gt;&lt;/figure&gt;

&lt;ol&gt;
  &lt;li&gt;The two trials are basically identical, in terms of time. That repeatability
is really nice to see.&lt;/li&gt;
  &lt;li&gt;The distance is going to be identical since that’s just a mathematical
accumulation, not a record of the travel distance of the physical device.&lt;/li&gt;
  &lt;li&gt;It’s a pretty smooth reduction in time as the step size increases, but it
plateau’s by about 1 mm. I had (naively) expected it to be linear.&lt;/li&gt;
  &lt;li&gt;There is a dramatic fall off between 2.75 mm and 3 mm step size. This is
really unexpected, it’s basically 1/2 the time.&lt;/li&gt;
  &lt;li&gt;A note about the overshoot. As shown in the bottom plot, all the circles
overshoot the mark. This is expected since (but not desirable) the loop that
draws the circles doesn’t take care on the last step to precisely end at the
desired length.&lt;/li&gt;
  &lt;li&gt;A last comment about the code: it doesn’t guard against a negative step
size.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I’ll end this part with the list of questions that I have, and they’re likely
to be the topics in the next post in the series.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Why is the “time to plot” non-linear? And why does it drop off the cliff at 3
mm?&lt;/li&gt;
  &lt;li&gt;Observationally with the real output, about 1 mm is the best step size. The
pre-render it looks like we could have done bigger. What is going on?&lt;/li&gt;
  &lt;li&gt;What is a theoretical expected step size? How can we motivate a good choice?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And of course continue with the plan. See you next time.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>First Post</title>
   <link href="https://www.pentronik.art/2020/08/22/first"/>
   <updated>2020-08-22T05:00:00-07:00</updated>
   <id>https://www.pentronik.art/2020/08/22/first</id>
   <content type="html">&lt;p&gt;First post, no content.&lt;/p&gt;

\[x = 1\]

&lt;p&gt;Just a tiny bit of math.&lt;/p&gt;

&lt;p&gt;And a mermaid figure.&lt;/p&gt;

&lt;script src=&quot;/assets/js/mermaid.min.js&quot;&gt;&lt;/script&gt;
&lt;div class=&quot;mermaid&quot;&gt;
graph TD;
    A--&amp;gt;B;
    A--&amp;gt;C;
    B--&amp;gt;D;
    C--&amp;gt;D;
&lt;/div&gt;

&lt;p&gt;Also there is a reference &lt;a class=&quot;citation&quot; href=&quot;#angell1987high&quot;&gt;(Angell and Griffith)&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Like, here is a tweet:&lt;/p&gt;

&lt;div class=&quot;jekyll-twitter-plugin&quot;&gt;&lt;blockquote class=&quot;twitter-tweet&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;4500 calls of &lt;a href=&quot;https://twitter.com/hashtag/vsketch?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#vsketch&lt;/a&gt;&amp;#39;s new `bezier()` function&lt;a href=&quot;https://t.co/C8mjfTkbAo&quot;&gt;https://t.co/C8mjfTkbAo&lt;/a&gt;&lt;a href=&quot;https://twitter.com/hashtag/plottertwitter?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#plottertwitter&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/generative?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#generative&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/creativecoding?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#creativecoding&lt;/a&gt; &lt;a href=&quot;https://twitter.com/hashtag/axidraw?src=hash&amp;amp;ref_src=twsrc%5Etfw&quot;&gt;#axidraw&lt;/a&gt; &lt;a href=&quot;https://t.co/NeJ0tunqKe&quot;&gt;pic.twitter.com/NeJ0tunqKe&lt;/a&gt;&lt;/p&gt;&amp;mdash; Antoine Beyeler (@abey79) &lt;a href=&quot;https://twitter.com/abey79/status/1298329592177008640?ref_src=twsrc%5Etfw&quot;&gt;August 25, 2020&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;https://platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;/div&gt;

&lt;p&gt;@abey79 makes some really great stuff.&lt;/p&gt;
</content>
 </entry>
 

</feed>
