"Arte gráfico" con R

El otro día dí con un blog dedicado al arte matemático y en particular con esta entrada sobre cómo crear figuras mediante rotación de segmentos:

El código (en matlab) estaba disponible y lo traduje a R:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
graphic.art <- function( foo, n = 200, init = -1, end = 1, breaks = 20 ){
    x <- seq( init, end, by = 1 / breaks )
    base <- matrix( c( x, foo( x ) ), ncol = 2 )
    rotate <- function(a,m) m %*% matrix(c(cos(a), -sin(a), sin(a), cos(a)), 2)
    my.lines <- sapply( 2 * pi * ( 1:n ) / n, rotate, base, simplify = F )
    limits <- data.frame(do.call(rbind, my.lines))
    limits <- data.frame(lapply(limits, range))
    plot(limits, type = "n")
    lapply(my.lines, function(x) lines(x, col = sample(colours(), 1)))
}

Unos querrán probar diversas opciones:

1
2
3
    graphic.art(sin)
    graphic.art(exp)
    graphic.art(tan)

A otros tal vez les interese comparar el código en R con el original en matlab para evalar pros y contras.