# la funzione in C
h <- function(z) z^2+z+1
# predispongo lo schermo
x1 <- -1; x2 <- 3; y1 <- -2; y2 <- 2
plot(c(x1,x2),c(y1,y2),type="n",xlab="", ylab="", asp=1)
abline(v=axTicks(1), h=axTicks(2), col="blue",lty=3)
abline(v=0, h=0, col="blue",lty=2)
# traccio il cerchio unitario e il suo trasformato mediante f
for(a in (0:1000)/1000*2*pi) {
  points(cos(a),sin(a), pch=".",col="red");
  points( Re( h(cos(a)+sin(a)*1i) ), Im( h(cos(a)+sin(a)*1i) ),
  pch=".",cex=2,col="blue") }
#
# alternativa:
source("http://macosa.dima.unige.it/R/curve.txt")
source("http://macosa.dima.unige.it/R/curve2.txt")
f <- function(t) cos(t); g <- function(t) sin(t)
boxm(-1,3, -2,2)
param(f,g, 0,2*pi, "red")
h <- function(z) z^2+z+1; k <- function(a,b) h(a+b*1i)
f1 <- function(t) Re(k(f(t),g(t)))
g1 <- function(t) Im(k(f(t),g(t)))
param(f1,g1, 0,2*pi, "blue")
#
# per vedere meglio l'associazione tra le due curve
for(n in (1:8)) {
param(f,g, (n-1)*(2*pi)/8,n*(2*pi)/8, n)
param(f1,g1, (n-1)*(2*pi)/8,n*(2*pi)/8, n) }

#
# Se vuoi vedere rallentato il tracciamento:
# tic(x) fa passare x sec
tic <- function(x) {sec <-proc.time()[3]; while(proc.time()[3] < sec+x) sec<-sec}
plot(c(x1,x2),c(y1,y2),type="n",xlab="", ylab="", asp=1)
abline(v=axTicks(1), h=axTicks(2), col="blue",lty=3)
abline(v=0, h=0, col="blue",lty=2)
# traccio il cerchio unitario e il suo trasformato mediante f
for(a in (0:1000)/1000*2*pi) {tic(0.03);
  points(cos(a),sin(a), pch=".",col="red");
  points( Re( h(cos(a)+sin(a)*1i) ), Im( h(cos(a)+sin(a)*1i) ),
  pch=".",cex=2,col="blue") }