Dithering takes an image and tries to represent it with a series of uniformly sized elements: pixels for digital images, or dots of ink for a pen plotter. I’ll assume that the background is white, and ink is black. To get an approximation of continuous gray levels, only some of the possible points will be […]

# Tag: penplot

## Eikonal Stripes

The Eikonal equation is an approximation used in solving wave equations, and it turns out to also be good for stripes! We try to make a phase map, (), based on the brightness of the image (), with , where is the minimum wavelength desired. This can be approximately solved with the gray-weighted distance transform, […]

## Simple cross-hatching

The simplest type of cross-hatching is to have a set number of hatching angles and constant spacing. The header image shows the result with 16 different angles. This can be extended to use other sorts of patterns. For example, here are orthogonal circular and radial lines: The number of overlapping lines was computed for each […]

## Polygon Subdivision

I’ve mentioned that subdividing an image is useful for putting patterns within the divisions. This method uses the outline of the subdivisions to provide the darkness. The way this is done is to repeatedly break a shape into two parts: ensuring that the ratio of perimeter to blackness within is equal on both sides. From […]

## Space Colonization

I saw an interesting algorithm for creating branching veiny patterns called the Space Colonization Algorithm. Of course, I had to apply it to halftoning. Basically, the veins grow in the direction of their nearest destination points. Once the vein is close enough to a destination point, that destination is removed from the list, and growth […]

## Scaly Rendering

I’ve been interested lately in approximating images using lines of constant width. To that end, I’ve made these: These patterns are grown iteratively. A shape begins growing from the unclaimed point closest to the center of the image. By sampling the brightness of the image, the size of the new shape is chosen such that […]

## Seismographs

On the theme of using a single path to shade an image, one idea is to use a wiggling line. A shorter wavelength will result in a darker area, and vice versa. So I threw a little math at the problem, and here are the results of using square, triangle waves, and sine waves: A […]

## Branching Lines

I was inspired by Rapidly Exploring Random Trees, and wanted to make a halftoning method based on that. I wanted more lines in dark areas and fewer in bright areas. With some tweaks on the concept, I’ve made something that works reasonably well. It probabilistically chooses new line segment endpoints that are relatively close to […]

## Quadtree Patterns

Also not very rigorous, but fun patterns. Basically divide the image up using quadtrees, and draw another sub-pattern if it needs to be darker. Check out squares: And circles: Not perfect, but I like the joining of the shapes.

## String Art

Here’s another non-rigorous one! I was inspired by a post showing off a sort of string art: run black string along a series of pins on a white background, and build an image that way. Here’s a couple examples, using 100 pins arranged in a circle: The first image picks its path with the darkest […]