13
$\begingroup$

Michael Noll

A. Michael Noll (born 1939 in Newark, New Jersey) is an American engineer and professor emeritus at the Annenberg School for Communication and Journalism at the University of Southern California. He was a very early pioneer in digital computer art. Starting in the early 1960s, Noll spent nearly fifteen years performing basic research at Bell Labs in Murray Hill, New Jersey. It was in the summer of 1962 that he sent a memo explaining he had generated a series of "interesting and novel patterns" on the IBM 7090, the same model NASA employed to launch the first American astronaut into space.

Sinusoids

enter image description here

Michael Noll, Ninety Parallel Sinusoids with Linearly Increasing Period, 1964, Victoria and Albert Museum, London, (Photographic print of a computer-generated image)

Mondrian

"Somebody suggested it might be interesting to look at a painting and see if a computer could make a similar version. That got me into the work of Piet Mondrian, and I started looking at his paintings. He did a series with horizontal, vertical,and circular bars, so I made a computer version of it. Because of my interest in psychology, I got the idea to show reproductions of both works to a hundred people and see which they preferred, as well as which they thought was done with a computer. That experiment was published in a peer-reviewed journal, The Psychological Record."

Douglas Dodds, Interview with Michael Noll, July 2023

enter image description here

Michael Noll, Computer Composition with Lines, 1964 (Left)

Piet Mondrian, Composition with Lines, 1917 (Right)

My reproduction attempts

Sinusoids

plot = Table[{Cos[1.055 Pi 2^x] + y}, {y, 0, 10, 0.111}];

Plot[
 Evaluate @ plot, {x, 0, 0.9 Pi},
 AspectRatio -> 1,
 Axes -> False,
 Background -> GrayLevel[0.9],
 ImagePadding -> {{20, 20}, {60, 60}},
 PlotStyle -> Directive[Thickness[0.002], Black],
 ScalingFunctions -> {"Reverse", "Reverse"}]

enter image description here

Mondrian

Number of elements

n = 100;

Elements per row / column

e = 2;

Max line length

l = 6;

row = 
 Table[Replace[
   RandomChoice[Range @ n, e], 
   a_ :> Line[{{a, i}, {a + RandomChoice[{1, l}], i}}], {1}], 
 {i, n}];

col = 
 Table[Replace[
  RandomChoice[Range @ n, e], 
    a_ :> Line[{{i, a}, {i, a + RandomChoice[{1, l}]}}], {1}], 
 {i, n}];

annulus = Graphics[{GrayLevel[0.9], Annulus[{n/2, n/2}, {n/2, n}]}];

Show[lines, annulus,
 Axes -> False,
 Background -> GrayLevel[0.9],
 ImageSize -> 400,
 PlotRange -> {{-10, n + 10}, {-10, n + 10}}]

enter image description here

Questions

Mondrian

My usage of annulus covers the lines creating very unpleasant cuts along the circle border. What I need is a circular region function which doesn't cut the line elements. With other words: Lines that start within the circle can extend beyond its perimeter like in the above Noll and Mondrian images.

Sinusoid

As a side question (not necessary for acceptance) I would like to find a nicer sinusoid formula avoiding the ScalingFunctions.

$\endgroup$
2
  • 1
    $\begingroup$ Maybe lines = Graphics[{AbsoluteThickness[3.5], Select[Flatten[{row, col}], RegionWithin[Disk[{n/2, n/2}, n/2], #] &] }] ? $\endgroup$
    – vindobona
    Apr 14 at 21:38
  • $\begingroup$ Looks perfect, vindobona, please post as answer $\endgroup$
    – eldo
    Apr 14 at 23:41

3 Answers 3

10
$\begingroup$

Starting from eldo's initial solution and using RegionWithin in order to limit the set of generated lines to a certain disk area.

n = 100; e = 2; l = 6;

row = 
 Table[Replace[
   RandomChoice[Range @ n, e], 
   a_ :> Line[{{a, i}, {a + RandomChoice[{1, l}], i}}], {1}], 
 {i, n}];

col = 
 Table[Replace[
  RandomChoice[Range @ n, e], 
    a_ :> Line[{{i, a}, {i, a + RandomChoice[{1, l}]}}], {1}], 
 {i, n}];

lines = 
 Select[
  Flatten[{row, col}], RegionWithin[Disk[{n/2, n/2}, n/2], #] &];

Graphics[{AbsoluteThickness[3.5] , lines},
 Axes -> False,
 Background -> GrayLevel[0.9],
 ImageSize -> 400,
 PlotRange -> {{-10, n + 10}, {-10, n + 10}}]

enter image description here

$\endgroup$
12
$\begingroup$
SeedRandom[1];

pts = RandomPoint[Disk[], 900];

Graphics[{LightBlue, Disk[], Thick, Black, 
  With[{r = RandomChoice[{{0, RandomReal[.05]}, {RandomReal[.05], 0}}]}, 
     Line[{# - r, # + r}]] & /@ pts}]

enter image description here

ParametricPlot[{.9 Pi - x, v - Cos[1.055  Pi  2^x]}, 
 {x, 0, 0.9  Pi}, {v, 0, 10}, 
 MeshFunctions -> {#4 &}, 
 Mesh -> 120, 
 PlotPoints -> 100,
 BoundaryStyle -> None, 
 PlotStyle -> None, 
 AspectRatio -> 1, Axes -> False, Frame -> False, 
 Background -> GrayLevel[0.9], 
 ImagePadding -> {{20, 20}, {60, 60}}]

enter image description here

$\endgroup$
10
$\begingroup$

Sinusoid

Plot3D[0.1 y - Sin[Exp[1/E x]], {x, 0, 8}, {y, -3, 3}
 , PlotStyle -> None
 , PlotRange -> All
 , Boxed -> False
 , BoundaryStyle -> None
 , Axes -> None
 , Mesh -> {0, 60, 0}
 , PlotPoints -> 20
 ]

enter image description here


Mondrian

Clear["Global`*"];
SeedRandom[1];
pts1 = RandomPoint[Disk[], 150];
pts2 = RandomPoint[Disk[], 150];

lines1 = Line@CirclePoints[#, {RandomReal[{0.01, 0.06}], 0}, 2] & /@ 
   pts1;
lines2 = Line@
     CirclePoints[#, {RandomReal[{0.01, 0.06}], π/2}, 2] & /@ 
   pts2;
Graphics[{
  MapThread[{AbsoluteThickness[RandomReal[{2, 5}]], #} &, {lines1}]
  , MapThread[{AbsoluteThickness[RandomReal[{2, 5}]], #} &, {lines2}]
  (*,Red,Dashed,Circle[]*)
  }
 ]

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.