Snippets

Stuart Morrison Chaos games

Created by Stuart Morrison last modified

shapes <- function(num, iter){
  # initialise a vector for starting points
  basex <- rep(0, num)
  basey <- rep(0, num)
  
  # Create starting points
  for (i in 1:num){
    basex[i] = 10 * cos(2 * pi * i / num)
    basey[i] = 10 * sin(2 * pi * i / num)
  }
  
  # initialise vectors for each draw
  iterx <- rep(0, iter)
  itery <- rep(0, iter)
  
  # draw random uniforms to pick each point
  iterx[1] <- runif(n = 1, min = min(basex), max = max(basex))
  itery[1] <- runif(n = 1, min = min(basey), max = max(basey))
  
  # pick which starting point to move towards
  pick <- ceiling(runif(n = iter, min = 0, max = 1) * num)
  for (i in 2:iter){
    iterx[i] <- iterx[(i-1)] + ((basex[pick[i]] - iterx[(i-1)]) * ((num - 2) / (num - 1)))
    itery[i] <- itery[(i-1)] + ((basey[pick[i]] - itery[(i-1)]) * ((num - 2) / (num - 1)))
  }
  
  # create a data frame for output
  start_points <- data.frame(x = basex, y = basey)
  iter_points <- data.frame(point = (1:iter), x = iterx, y = itery)
  
  return(iter_points)
}

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.