# Can we emulate Paul Henry's drawing machine?

Desmond Paul Henry

Desmond Paul Henry $$(1921-2004)$$ was a Manchester University Lecturer and Reader in Philosophy. He was one of the British pioneers of Computer Art.

Henry with Drawing Machine 2, 1964

During the 1960's he constructed three drawing machines based around the components of a Norden analogue bombsight computer. These computers were employed in World War II bomber aircraft to calculate the accurate release of bombs.

Norden bombsight computer

Henry's electronically operated machines relied mainly on the "mechanics of chance". This meant they could not be programmed or store information as in a conventional computer, nor were they precision instruments. As a result, Henry had only overall control, but he could spontaneously intervene to direct the course of image production.

Henry's Drawing Machine 1

Henry's machine drawings were forgotten until their reappearance in the $$2010$$ “Digital Pioneers” exhibition at the Victoria & Albert Museum in London.

Image produced by Drawing Machine $$1$$ $$(1962)$$

Similarities

Henry’s machines produced abstract, curvilinear, repetitive line drawings. He compared his images to those produced with harmonographs and ornamental geometric lathes.

Max Ernst making Lissajous figures with his harmonograph, New York, $$1942$$

Since $$1950$$ Benjamin Francis Laposky photographed the screen of a modified oscillograph combined, among others, with a sinus wave generator.

Benjamin Francis Laposky, Oscillon Number Four, $$1950$$

My attempt

A modified Poincaré Map was the closest I got to Henry's winding and swirling random patterns:

data =
Reap[
NDSolve[{
x''[t] + 0.2 x'[t] - x[t] + x[t]^3 == 0.3 Cos[t],
x[0] == 0,
x'[0] == 0,
WhenEvent[Mod[t, Pi/2] == 0,
Sow[{
x[t],
x'[t]}]]},
{},
{t, 0, 200000}]];


Unfortunately, it produces points, not lines:

ListPlot[data[[2]],
AspectRatio -> 0.7,
Axes -> False,
Background -> Black,
PlotStyle -> Directive[GrayLevel[0.5], PointSize[.002]]]


My attempt

Desmond Paul Henry

My request

I want to reproduce one of Henry's spiralling line patterns with Mathematica (similar to the one below; the coloring is optional). More of them can be seen here: desmond henry gallery

• I have to admit that I am so much used to high-quality presentations by you in this topic, that I first clicked the upvote, then left a comment and now I am going to enjoy some art-maths-coding information.
– bmf
Commented Mar 1 at 9:13
• I agree with @bmf . I would happily purchase a compendium of what you’ve written—and what you’ve learned from the community. Commented Mar 1 at 12:57

An attempt:

SeedRandom[5];
random = RandomReal[2, {10, 2}] & /@ Range[10];
ptsA = Table[
Map[Dot[RotationMatrix[-1/10 \[Theta]  ] , #] &,
Table[Cos[#1] + i    Sin[(#2 - #1)], {i, 0, 1, .1}] & @@
random, {2}], {\[Theta] , Pi/4, 4 Pi, Pi/3}];

SeedRandom[2];
random = RandomReal[1.5, {10, 2}] & /@ Range[10];
ptsB = Table[
Map[Dot[RotationMatrix[1.3  Pi - 1/8 \[Theta]  ] , #] &,
Table[Cos[#1] + i    Sin[(#2 - #1)], {i, 0, 1, .1}] & @@
random, {2}], {\[Theta] , Pi/2, 8 Pi, Pi/3}];

SeedRandom[1];
random = RandomReal[2, {10, 2}] & /@ Range[10];
ptsC = Table[
Map[Dot[RotationMatrix[1/20 \[Theta]  ] , #] &,
Table[Cos[#1] + i    Sin[(#2 - #1)], {i, 0, 1, .1}] & @@
random, {2}], {\[Theta] , 0, 2^3 Pi, Pi/2}];

Show[
Map[Graphics[ {Opacity[.3], RGBColor[.7, .3, .3], BSplineCurve[#, SplineClosed -> True, SplineDegree -> 5]} ] &, ptsA]
, Map[Graphics[ {Opacity[.3], RGBColor[.6, .4, .4], BSplineCurve[#, SplineClosed -> True, SplineDegree -> 5]} ] &, ptsB]
, Map[Graphics[ {GrayLevel[0, .1],  BSplineCurve[#, SplineClosed -> True, SplineDegree -> 5]} ] &, ptsC]
, ImageSize -> Large]


• Thank you, vindobona, that's very beautiful and a true replica
– eldo
Commented Mar 2 at 16:04
• @eldo Glad you enjoyed it :-). Thank you for all these exceptional art related posts. Commented Mar 2 at 16:50
• How did you do this just by looking at the pic, I am very impressed. Commented Mar 5 at 18:55
• @EduardoSerna Thank you! Regarding how I did it :-) ... I started with the basic formula for the points of the BSplineCurve and afterwards by using Manipulate and different seeds I went through several combinations in order to get somehow closer to the spiralling line patterns seen in the picture. Commented Mar 7 at 19:05