# Un esempio di trasformazione:    z -> z*(cos(a)+sin(a)*1i)
source("http://macosa.dima.unige.it/r.R")
dev.new(width=4.8,height=2.4)
rowcol(1,2)
Box_(-4,4, -4,4)
x1 = y1 = x2 = y2 = x3 = y3 = x4 = y4 = NULL
# Trasformo il rettangolo con lati orizzontali e verticali
# largo 2 alto 1 centrato in (2,0)
c1 = "blue"; c2 = "red"; c3 = "green4"; c4 = "black"
# traccio le 4 curve che formano la figura iniziale approssimandole
# con 100 segmentini (sono i quattro lati del rettangolo)
n = 100; i = 1:(n+1); j = i-1
x1[i] = 1+2/n*j; y1[i] = 1/2; segm(x1[i],y1[i],x1[i+1],y1[i+1],c1)
x2[i] = x1[i]; y2[i] = -1/2; segm(x2[i],y2[i],x2[i+1],y2[i+1],c2)
x3[i] = 3; y3[i] = -1/2+1/n*j; segm(x3[i],y3[i],x3[i+1],y3[i+1],c3)
x4[i] = 1; y4[i] = y3[i]; segm(x4[i],y4[i],x4[i+1],y4[i+1],c4)
#
a = 2*pi/3; T = function(z) z*(cos(a)+sin(a)*1i)
Box_(-4,4, -4,4)
# prima le curve originali
x1[i] = 1+2/n*j; y1[i] = 1/2; segm(x1[i],y1[i],x1[i+1],y1[i+1],c1)
x2[i] = x1[i]; y2[i] = -1/2; segm(x2[i],y2[i],x2[i+1],y2[i+1],c2)
x3[i] = 3; y3[i] = -1/2+1/n*j; segm(x3[i],y3[i],x3[i+1],y3[i+1],c3)
x4[i] = 1; y4[i] = y3[i]; segm(x4[i],y4[i],x4[i+1],y4[i+1],c4)
# le 4 curve trasformate mediante T
cu = function(z1,z2,c) segm(Re(T(z1)),Im(T(z1)),Re(T(z2)),Im(T(z2)),c)
z1 = x1[i]+1i*y1[i]; z2 = x1[i+1]+1i*y1[i+1]; cu(z1,z2,c1)
z1 = x2[i]+1i*y2[i]; z2 = x2[i+1]+1i*y2[i+1]; cu(z1,z2,c2)
z1 = x3[i]+1i*y3[i]; z2 = x3[i+1]+1i*y3[i+1]; cu(z1,z2,c3)
z1 = x4[i]+1i*y4[i]; z2 = x4[i+1]+1i*y4[i+1]; cu(z1,z2,c4)
# la nuova trasformazione, da completare:
a = ...; T = function(z) z*(cos(a)+sin(a)*1i)
cu = function(z1,z2,c) segm(Re(T(z1)),Im(T(z1)),Re(T(z2)),Im(T(z2)),c)
z1 = x1[i]+1i*y1[i]; z2 = x1[i+1]+1i*y1[i+1]; cu(z1,z2,c1)
z1 = x2[i]+1i*y2[i]; z2 = x2[i+1]+1i*y2[i+1]; cu(z1,z2,c2)
z1 = x3[i]+1i*y3[i]; z2 = x3[i+1]+1i*y3[i+1]; cu(z1,z2,c3)
z1 = x4[i]+1i*y4[i]; z2 = x4[i+1]+1i*y4[i+1]; cu(z1,z2,c4)