Unfortunately vtkStripper still has a bug (since 2004!) which rendered it unusable for my endeavor. It causes some images to look quite wrong (thus they’d be printed wrong) as it combined some polylines in an unsuitable manner. The slice pictured below has that white/inverted triangle which is not supposed to be there.

After patching vtkStripper.cxx with the patch attached to be bug, everything was fine. (Well pretty much, I’ve still experienced the problem one time, but hey, what’s perfect in this world
- Slice STL model using vtkCutter and store the polylines in vtp files. By decuppling the cutting process from rendering the images, we gain flexibility, since we do not have to do the cutting each time we want to use a different rendering algorithm. The first step also computes the bounds of the model (using a bounding box) and stores them in a file.
- Convert polyline to SVG. We use SVG since it provides multiple benefits over directly rasterizing the polyline. First of all we retain control over the units (during the whole process you want to make sure you don’t mess up the units, or otherwise your printed object may be twice as large as anticipated or similar problems may occur).
- Use ImageMagick to rasterize the SVG graphics. Actually that’s something pretty cool, because in this step we can easily ensure that we’re using the correct resolution for our printer. So if we used an Ink printer to apply the binder during the 3D printing process, we could simply use the resolution of the printer.
So now that we have all slices we can (of course) print them, or we could make a little movie out of them, which is exactly what I did:
The model’s coming from Thingiverse and the music is from SoundCloud. You might notice the full model in upper right corner, that’s just visual sugar for the video and not part of the sliced images.
Download me here.

of the alphabet
. And that you wanted to do that in a parallel manner, such that you had a set of threads where each thread has a unique number out of
assigned.
, so that each thread could easily (reading with less computational effort) generate the word it’s supposed to work on. Notice that implicit definition of
.
to points in an
-dimensional discrete hypercube. That mapping
is defined as follows:
where
. This mapping obviously maps a natural number
to a point in a discrete
. Example: Consider
and
. Then we can visualize
as follows:
is easy to find. Consider
where the
are the components of the vector
and
.
is
and exactly what we desired. One might notice that
must be surjective so that each word is computed if there are just enough threads. To prove that, we’ll prove that
is surjective (since the functional composition of two surjective functions is surjective as well).
.
,
and
. Assume that
, then
. Similar goes for the equivalence of (2) and (3):
as
.
.
then the vector
(which obviously fullfils
) must exist, since
and
.
) are equal. But how do we show that?
to be a sequence of transitions (called path or trace). We’ll call a path loop free if
holds – meaning that there are no two transitions within a path having the same start state.














)


