Skip to content

Category Archives: CNC

With FreeSerifBoldItalic, don't ever write "zj"!

Update: Here is "VX" with FreeSerifItalic. There is overlap in LibreOffice also. For the most part truetypetracer produces valid and nice input data for testing openvoronoi. But sometimes I see wiggles, and now this: It is frustrating to try to track down bugs in downstream algorithms that take this as input, and assume all line-segments [...]

V-carving test

A first try at v-carving, with toolpaths produced by the ttt2medial python script.

Non-smooth output from ttt

I tried cranking up (10-fold) the number of line-segments that are used when approximating conics and cubics with lines. The results are mostly OK, but sometimes "wiggles" or "S-curves" appear, which cause problems for the medial-axis filter. This "P" is an example: The medial axis on the right does not look correct. If we zoom [...]

EMC2 Filters

I hacked together a few python-scripts that can be run as "filters" in EMC2. They are opened/run from AXIS and produce G-code into EMC2. The first one is ttt2ngc which simply demonstrates my C++ port of Chris Radek's truetype-tracer. The original code is a rather monolithic C-program while my C++ port is divided into smaller [...]

Graph filters

I've put together two graph filters that can be applied to the VD. The first one detects the interior or exterior of a polygon. When the VD is constructed the polygon boundary must be input in CW order, and any islands inside the polygon in CCW order (or vice versa). This allows running other downstream [...]

2D Offsets

Once we have a VD it is almost trivial to calculate 2D offsets. While the VD for n line-segments takes O(n*log(n)) time to calculate, the offset-generation is a simple "march" that takes O(n) time. In this "A" example it takes 24 milliseconds to calculate the VD and less than 1 millisecond to produce all the [...]

VD Alphabet

There was an issue with handling collinear line-segments, which is hopefully now fixed. OpenVoronoi seems to deal OK with most characters from ttt now. I am still getting some Warnings about numerical instability from LLLSolver, possibly related to these high-degree vertices which don't look quite right (this is a zoom-in inside the circular dot of [...]

TTT++ and font-vd

Update: Now all the capital letters work! I wanted to test my VD algorithm on font-outlines. So I ported Chris Radek's truetype-tracer to c++ and added some python bindings. Here: https://github.com/aewallin/truetype-tracer Because my VD code cannot handle circular arcs yet, I took some old code from TTT 3.0 and made converting conics and cubics, the [...]

VD for polylines and polygons

I've been hacking away at openvoronoi, adding support for polylines and polygons. The code I had in November works with individual non-intersecting line segments, like this: Note how each vertex in the figure above is of degree three, i.e. there are three edges incident on each vertex. There's something about the number three, or triangles, [...]

Call graph

For profiling I made a small c++ program which calculates a poisson voronoi diagram. When called through valgrind like this (under valgrind the program will run roughly 50 times slower than normal) valgrind --tool=callgrind -v ./ovd_tst --n 1000 I can then use kcachegrind to draw a call graph. I thought the nearest-neighbor grid-search (grid_find_closest_face()) would [...]