# Variante di numeri_complessi_3.R, con animazioni
# 

# definizione delle funzioni ---------------------------------------------
start.plot.im <- function(Z) {
   # Z rappresenta il max di |Re(z)| e |Im(z)| rappresentabile
   plot(NULL, xlim=c(-Z,Z), ylim=c(-Z,Z), xlab='Re( )', ylab='Im( )', asp=1)
   grid()
}

plot.im <- function(z, pch=19, col='blue', lwd=1) {
   points(z, pch=pch, col=col)
   lines( c(0, Re(z)), c(0, Im(z)), col=col, lwd=lwd)
}

cerchio <- function(C=c(0,0), r=1, ...) {
  th=seq(0, 2*pi, by=0.02)
  points(C[1] + r*cos(th), C[2] + r*sin(th), ty='l', ...)
}
#-----------------------------------------------------------------

rho  <- c(1, 1.05, 0.95)
cols <- c('blue', 'red', 'green')
lwds <- c(2, 2, 2)

nome.files <- "piano_complesso_animato"
png (file=paste("tmp/", nome.files, "%03d.png", sep=''), width=480, height=480)


for (i in 1:3) {
  for (k in 1:16) {
    start.plot.im(2)
    cerchio(col='grey')
    z = rho[i] * (0+1i)^(1/4)
    plot.im(z^k, lwd=lwds[i], col=cols[i])
    text(1.1, 1.7, sprintf("rho = %.2f \nk = %d",rho[i],k),
         col=cols[i], cex=1.7, pos=4)
  }
}

dev.off()

dt   <- 0.2
#-------------------------------------------------------------------
system (sprintf("convert -delay %d tmp/*.png %s.gif",
        as.integer(dt/0.01), nome.files))


#----------------------------------------------------------
# alternativa (a riga di comando dalla shell):
#
# convert -set delay 20 -quality 100 tmp/*.png outputfile.mpeg
#
