#######################################
# GP Geometria piana.

# Ingrandimento rispetto al centro.
Gp.ing = function (z,fx,fy=fx,centro)
{if (missing(centro))
Re(z)*fx+Im(z)*fy*1i
else centro+Gp.ing(z-centro,fx,fy)}

# Inversione rispetto al cerchio unitario.
Gp.inv = function (z) 1/Conj(z)

# Proiezione di z sulla retta p+tw.
Gp.proi = function (z,p,w)
{t=Gp.scalare(z-p,w)/Gp.scalare(w,w)
p+t*w}

# Rotazione di z per alfa gradi
# attorno al centro.
Gp.rota = function (z,alfa,centro)
{if (missing(centro))
z*exp(1i*alfa*Cm.pid180)
else centro+Gp.rota(z-centro,alfa)}

# Riflessione di z alla retta p+tw.
Gp.riflretta = function (z,p,w)
2*Gp.proi(z,p,w)-z

# Prodotto scalare di due numeri
# complessi come vettori del piano.
Gp.scalare = function (z,w)
Re(z*Conj(w))