Hello, please find enclosed a few fixes, an improvement, and a new feature.
- Controller – Pulling a selection area that overhangs the bottom of an image would cause an unhandled exception. Fixed by mending the Rectangle.surrounds(..) method. Off by one, tsk.
- Controller – Changing to another serial port would always set the baud rate to 57600, regardless of what was set in the properties file.
- polargraph_server_mega – Rolled mbcook’s pbm format fixes into the mega branch. I’d forgotten that I had to do that. Also rejigged it a little, but cosmetic.
- polargraph_server_* – All firmwares have had their straight line (C17) commands improved. The last version was ok, but seemed to work much better on polarshields than on the adafruit shield, because of a poorly scaling acceleration algorithm. It was pretty pausey. I have pinched the acceleration algorithm from Mike McCauley’s Accelstepper library, and that works much, much better. I even half understand it.
And a feature in a pear tree:
Vector art that has been created from an automatic bitmap tracing process tends to be made up of loads of tiny lines. When processed through the controller and quantised to the grid of the machine, they often end up on top of each other, and duplicate points are just slow.
So I’ve added this new slider, which is essentially a
lowhigh-pass filter that filters out lines below a certain length. It re-samples longer lines, and discards entirely lines that are shorter than the threshold. See these two vector previews:
The left-hand figure has only duplicate points filtered out, this brings it down from around 15,000 commands to 11,700. Quite a few of those are still just single points – just dots.
The right-hand figure has the shortest vector filter bumped way up, and only has 300 commands.
The drawing wasn’t very good because my pen was running out and it was a bit fast, but you get the point. Smaller filter values will result in more fidelity, while bigger values will have a more dramatic effect.