#--------------------------------------------------------
# Polarizzazione lineare

#
#   GdA gen 2022
# --------------------------------------------------------

E0y   <- 1
E0z   <- 1 # 0.5 per ellittica

om    <- 1    # pulsazione  unitaria
T     <- 2*pi/om
oa    <- -1   # oraria o antioraria: +1 o -1   

old.mar = par("mar")
par(mar=c(4.0,4.0,3.0,0.1))   # margini ottimizzati

dt <- T/32 # intervalli di tempo in unità del periodo

t = - dt
while(1) {
    t  <- t + dt
    Ey <- E0y*cos(om*t)
    Ez <- E0z*cos(om*t + oa*pi/2)
    By <- -Ez
    Bz <- Ey
    plot(NULL, xlim=1.1*c(-1.1,1.1), ylim=1.0*c(-1.1,1.1), xlab='', ylab='', 
         xaxt='n', yaxt='n', asp=1, bty='n')    
    abline(h='0', lty=2, col='gray')
    abline(v='0', lty=2, col='gray')
    text(1.1,0,'y',cex=2)
    text(0,1.1,'z',cex=2)
    arrows(0,0,Ey, Ez, col='red', lwd=2, length=0.1)
    if(abs(Ey)>0.001) arrows(0,0,Ey, 0, col='red', lty=2, lwd=2, length=abs(Ey)*0.1)
    if(abs(Ez)>0.001)arrows(0,0,0, Ez, col='red', lty=2, lwd=2, length=abs(Ez)*0.1)
    arrows(0,0,By, Bz, col='green', lwd=2, length=0.1)
    points(0,0, col='blue', pch=19, cex=abs(Ey^2+Ez^2))
    Sys.sleep(0.2)
    if( t > 2*T) break()
}
par(mar=old.mar)
