Click on the canvas to make draggable dots; quadratic splines will be interpolated.

This is a simulation of a device from an alternate history: one in which ephemeral vector displays like the TX-2, the Vectrex, the Tempest video game cabinet, and so on, had been the display device of choice in the 8-bit 1980s — instead of the low-resolution raster displays that actually were the display devices of choice in our universe.

Vector displays, like the laser-show displays still in use today, drive the electron beam from a couple of DACs, one for X and one for Y, drawing a dot. In the earliest machines, these DACs were driven from a couple of machine registers updated by the CPU, but that meant that the CPU could easily spend most of its time updating the screen. So shortly, as documented in Sutherland’s famous “Wheel of Reincarnation” paper, a line generator was hooked up to these registers; each cycle, it would increment the X and Y registers by a given amount, thus drawing a straight line across the display for potentially many cycles, relieving the CPU from the inner loop. Over time these became more powerful and complex, but the primitive remained a line.

But what if the primitive hadn’t been a line? In hardware, it’s easy to hook up an X register to an adder and a clock such that on each clock cycle it is updated to X + ΔX using a ΔX register. It doesn’t slow things down any to add a ΔΔX register that adds an increment to the ΔX register, too, and this allows you to tabulate arbitary quadratic functions. (This, known as the Method of Finite Differences, was the method Babbage’s Difference Engine used to tabulate arbitrary polynomials.) An arbitrary quadratic function in each of X and Y gives you a fair bit of liberty to draw curved lines of smoothly varying intensity on a vector display.

So, this page roughly simulates that very simple hardware, and gives you tools to draw on it with. The current drawing is stored in the URL, which you can bookmark, post publicly, or send to a friend. This probably puts a limit of a few thousand points on the drawing, but the redraw will get unbearably slow long before that.

What does a font look like if you design it this way? So far all of my example fonts look kind of graffiti-like and need about 15 bytes per glyph in the goofy Douglas-Adams-based compressed format I dreamed up for the URL fragment, three times the size of a 5×8 bitmap font glyph. But this is only the beginning of these experiments. Maybe I should make one using a bicubic spline, or one with the knots restricted to lattice points.