Golden ratio of Valium

Damien Hirst and patterns again, this time using the golden ratio.
Author

Tuomas Rajala

Published

February 16, 2020

Hirst’s Valium and the Golden ratio

The artist Damien Hirst has a painting called Valium (2000) (£6k-8k at Christie’s) which is based on a geometrically repeating pattern coupled with randomised colors. The pattern of locations resembles that found in a sun flower, and has a beautiful connection to the golden ratio. Numberphile has a video that explains the maths quite nicely, let’s demostrate the idea here.

The priciple is to add dots around a center with a constant rotational step while moving further out each round. let’s write a script that does that:

generator <- function(
              frac = 2, # fraction of a round per turn
              its  = 100 # do this many rounds
              ){
  turn <- 2*pi / frac # turn angle each step, radians
  it <- 1 # which rotation are we at
  ang <- 0  # # Points in polars, first location
  r <- 1
  i <- 1 # iterator
  while(TRUE) {
    newang <- turn + ang[i]
    if(newang >= 2*pi){ # have we done full round?
      it <- it + 1
      if(it > its) break # stop
      r[i+1] <- r[i] + 1     
    }
    else {
      r[i+1] <- r[i]
    }
    ang[i+1] <- newang %% (2*pi)
    i <- i+1
  }
  # In Cartesian
  x <- r * cos(ang)
  y <- r * sin(ang)
  cbind(x = x, y = y, r = r, ang = ang)
}


# shorthand generate + plot
plop <- function(frac, its, ..., main = 1/frac) {
  lim <- c(-1,1)*( its + 1)
  plot(generator(frac, its), 
       axes=FALSE, asp = 1, xlim = lim, ylim =lim, main = main, ...)
  points(0,0,pch=3)
}

We can now illustrate that if the turn is a rational fraction of a circle, we get a repeating pattern. Example:

fracs <- c(2, 3, 5, 10)
par(mfrow = c(2,2), mar = c(1,1,1,1))
for(f in fracs) plop(f, its = 20)

Figure 1: Rational fractions.

So when the fraction is 1/5 we will have 5 spokes, for example.

The interesting thing is that when the fraction becomes less like a rational number, the pattern becomes more and more staggered. Repeating the example in the Numberphile video where we are close to the fraction 1/3:

fracs <- (3 + seq(-1,1, l = 7)*.01)[-1]
par(mfrow = c(2,3), mar = c(1,1,2,1))
for(f in fracs) plop(f, its = 200)

Figure 2: Fractions near 1/3

In the video the golden ration \(\phi=\frac{1 + \sqrt{5}}{2}\approx 1.61808\) is argued to be”the most irrational number” because it is hardest to approximate with a rational number. The maths is not hard to understand, but to just illustrate the property discussed in the video, let’s see some irrational numbers alongside the golden ratio:

gr <- (1+sqrt(5))/2
fracs <- list("pi"= pi, "Sqrt 2"= sqrt(2), "Golden ratio"= gr)
par(mfrow = c(1,3), mar = c(1,1,1,1))
for(i in names(fracs)) plop(fracs[[i]], its = 500, main = i, cex = .5)

Figure 3: Irrational fractions.

It is quite clear how \(\pi\)’s pattern has that spokiness of rational numbers, and this is because it can be approximated with a rational number quite well (viz. Figure 2 above). \(\sqrt{2}\) is a bit more mixed up but starts to show spokes as we get further out. The golden ratio is clearly the least spoky and keeps at it the furthest out. Note also the resemblance to the sun flower.

Spot paintings

Returning to the paintings by Damien Hirst, we can now mimic the Valium painting pattern as it is quite obviously based on the golden ratio.

First, let’s adjust the radius of each dot, as otherwise the pattern is visually too packed near the center and thins out the further we go. To do this we transform each point’s distance from the center by taking the square-root of it, which will keep the intensity of the points per unit area constant (proof available somewhere). Then we decorate with the famous random colors, and just as a final touch we add some noise to mimic the imperfect human hand:

set.seed(1)
x <- generator(gr, 700)
ang <- x[,4]
newr <- sqrt( x[,3] )
xy <- cbind( newr * cos(ang), newr*sin(ang)  )
# add some noise
xy <- xy + runif(length(xy), -.1, .1)
# Pick colors:
col <- sample(colors(), nrow(xy), replace = TRUE)

# we are done:
par(mar=c(1,1,1,1), mfrow=c(1,1))
plot(xy, asp = 1, pch = 19, col = col, axes=F, cex= 1)

Author’s rendition

For reference, here is the original by Hirst:

Hirst: Valium (from Wikiart)

I don’t have £7k or anything like that floating around, but I’m pretty sure that when I want random spots on a white canvas to decorate my flat with, I can figure out a sufficient substitute.