Cerchio = function (t,r) {Ellisse(t,r,r)} Ellisse = function (t,a,b) {a*cos(t)+1i*b*sin(t)} # Ramo destro di un'iperbole. # Ramo sinistro con -a. Iperbole = function (t,a,b) {a*cosh(t)+1i*b*sinh(t)} # Pagina 38. Parallele = function (larg,alt,n, bordo=F) {z1=seq(0,larg,length=n) z2=z1+1i*alt; na=rep(NA,n) p=c(matrix(c(z1,z2,na),nrow=3,byrow=T)) bsin=0; asin=1i*alt; bdes=larg; ades=larg+asin; if (identical(bordo,"s")) c(p,asin,ades) else if (identical(bordo,"i")) c(p,bsin,bdes) else if(bordo) c(p,asin,ades,NA,bsin,bdes) else p} # Vertici di un n-gono regolare # di raggio r. Poligono = function (n,r) {t=seq(0,2*pi,length=n+1) Cerchio(t,r)} # Punti della retta tra z1 e z2 # corrispondenti ai parametri t. Retta = function (t,z1,z2) {z1+t*(z2-z1)} # c(bsin,bdes,ades,asin) di # un rettangolo di larghezza dx # e altezza dy. Rettangolo = function (dx,dy, ades=NULL, asin=NULL, bdes=NULL, bsin=NULL, centro=0) {if (!is.null(asin)) {ades=asin+dx; bsin=asin-1i*dy; bdes=bsin+dx} else if (!is.null(ades)) {asin=ades-dx; bsin=asin-1i*dy; bdes=bsin+dx} else if (!is.null(bsin)) {asin=bsin+1i*dy; ades=asin+dx; bdes=bsin+dx} else if (!is.null(bdes)) {bsin=bdes-dx; asin=bsin+1i*dy; ades=asin+dx} else {asin=Re(centro)- dx/2+1i*(Im(centro)+dy/2); ades=asin+dx; bsin=asin-1i*dy; bdes=bsin+dx} c(bsin,bdes,ades,asin)}