«Here is an elegant way to draw almost circles on a point-plotting display:
NEW X = OLD X – epsilon * OLD Y
NEW Y = OLD Y + epsilon * NEW(!) X
This makes a very round ellipse centered at the origin with its size determined by the initial point. epsilon determines the angular velocity of the circulating point, and slightly affects the eccentricity. If epsilon is a power of 2, then we don't even need multiplication, let alone square roots, sines, and cosines! The "circle" will be perfectly stable because the points soon become periodic.
The circle algorithm was invented by mistake when I tried to save one register in a display hack! Ben Gurley had an amazing display hack using only about six or seven instructions, and it was a great wonder. But it was basically line-oriented. It occurred to me that it would be exciting to have curves, and I was trying to get a curve display hack with minimal instructions.»
("Item 149 (Minsky): Circle Algorithm" in HAKMEM, Programming Hacks. MIT AI Memo 239, Feb. 29, 1972)
Remarkably, this approach was also used for sine and cosine computations in the Sinclair Scientific pocket calculator (1974): http://files.righto.com/calculator/sinclair_scientific_simul...
For a fun application using oscillators based on this algorithm see the "Minskytron" (by Marvin Minsky, early 1960s), http://www.masswerk.at/minskytron/