source("http://macosa.dima.unige.it/r.R") # If I have not already loaded the library [ Vedi qui ] ---------- ---------- ---------- ---------- ---------- ---------- ---------- ----------# SELECT everything (from here to ###) and paste in R # We use co[] for the colors of the various parts of the image co=NULL co[1]="grey30" co[2]="blue" co[3:6]="black" co[7]="white" co[8]="white" co[9]="black" co[10]="black" co[11]="brown" co[12]="white" co[13]="brown" co[14]="brown" co[15]="black" x = c(-0.1,5); y = c(-0.1,3); w = c(-0.1,3) # the box z = array(c(w[1],w[1],w[1],w[1]), dim=c(2,2)) # z-coord. of the base of the box # I trace the box, choose a point of view with th and ph (direction of look projected on # horizontal plane, its inclination relative to that plane); scale=FALSE chooses a # monometric scale; di chooses the distance of the eye thphdi = function(t,p,di) { par( mai = c(0,0,0,0) ) # I reduce the margins F = persp(x,y,z,theta=t,phi=p,scale=FALSE,zlim=w,xlim=x,ylim=y,d=di,box=FALSE,border="white") FFF <<- F xm=5; ym=3; zm=3 # grid (z=0 plane, x=0 plane, y=0 plane) if(co[1]!="white") for(i in seq(1,xm,1)) lines(trans3d(i,c(0,ym),0,pmat=F),col=co[1],lty=3) if(co[1]!="white") for(i in seq(1,ym,1)) lines(trans3d(c(0,xm),i,0,pmat=F),col=co[1],lty=3) if(co[1]!="white") for(i in seq(1,ym,1)) lines(trans3d(0,i,c(0,zm),pmat=F),col=co[1],lty=3) if(co[1]!="white") for(i in seq(1,zm,1)) lines(trans3d(0,c(0,ym),i,pmat=F),col=co[1],lty=3) if(co[1]!="white") for(i in seq(1,xm,1)) lines(trans3d(i,0,c(0,zm),pmat=F),col=co[1],lty=3) if(co[1]!="white") for(i in seq(1,zm,1)) lines(trans3d(c(0,xm),0,i,pmat=F),col=co[1],lty=3) # axes if(co[2]!="white") lines(trans3d(c(0,0),c(0,0),c(0,zm),pmat=F),col=co[2],lty=3) if(co[2]!="white") lines(trans3d(c(0,xm),c(0,0),c(0,0),pmat=F),col=co[2],lty=3) if(co[2]!="white") lines(trans3d(c(0,0),c(0,ym),c(0,0),pmat=F),col=co[2],lty=3) # figure (top) if(co[3]!="white") lines(trans3d(c(2,2),c(1,2),c(1,1),pmat=F),col=co[3]) if(co[4]!="white") lines(trans3d(c(2,4),c(1,1),c(1,1),pmat=F),col=co[4]) if(co[5]!="white") lines(trans3d(c(4,4),c(1,2),c(1,1),pmat=F),col=co[5]) if(co[6]!="white") lines(trans3d(c(2,4),c(2,2),c(1,1),pmat=F),col=co[6]) # figure (bottom) if(co[7]!="white") lines(trans3d(c(2,2),c(1,2),c(0,0),pmat=F),col=co[7]) if(co[8]!="white") lines(trans3d(c(2,4),c(1,1),c(0,0),pmat=F),col=co[8]) if(co[9]!="white") lines(trans3d(c(4,4),c(1,2),c(0,0),pmat=F),col=co[9]) if(co[10]!="white") lines(trans3d(c(2,4),c(2,2),c(0,0),pmat=F),col=co[10]) # figure (side) if(co[11]!="white") lines(trans3d(c(4,4),c(1,1),c(0,1),pmat=F),col=co[11]) if(co[12]!="white") lines(trans3d(c(2,2),c(1,1),c(0,1),pmat=F),col=co[12]) if(co[13]!="white") lines(trans3d(c(2,2),c(2,2),c(0,1),pmat=F),col=co[13]) if(co[14]!="white") lines(trans3d(c(4,4),c(2,2),c(0,1),pmat=F),col=co[14]) # man if(co[15]!="white") lines(trans3d(0,2,c(0,2),pmat=F),lwd=3,col=co[2]) if(co[1]!="white") points(trans3d(0,2,2,pmat=F),pch=19,col=co[15]) } ### BF=3; HF=3; NW(); thphdi(130,25,1) # W = PXY(c(2,4,4,2),c(1,1,2,2),c(1,1,1,1),FFF); X=W[1:4]; Y=W[5:8]; polygon(X,Y,col="orange") W = PXY(c(4,4,4,4),c(1,2,2,1),c(0,0,1,1),FFF); X=W[1:4]; Y=W[5:8]; polygon(X,Y,col="orange") W = PXY(c(2,4,4,2),c(2,2,2,2),c(0,0,1,1),FFF); X=W[1:4]; Y=W[5:8]; polygon(X,Y,col="orange")