10 '----------------------------------------
20 '-     Juan Manuel Mayoral Serrano      -
30 '- Adapt.: Carlos de la Ossa Villaca¤as -
40 '-  3DGRAF  (c) TU MICRO AMSTRAD 1986   -
50 '----------------------------------------
60 MODE 2:BORDER 0:INK 0,0:INK 1,16
70 largo=200:alto=137:xg=5:zg=3
80 ct=INT(largo/xg/2):pf=INT(alto/zg/3)
90 DIM p(ct,pf)
100 DEF FN f(x,z)=EXP((x*x-z*z)/1000)/3:GOSUB 190
110 ORIGIN 200,0:DEF FN f(x,z)=(x*x+z*z)/1000:GOSUB 190
120 ORIGIN 400,0:DEF FN f(x,z)=-(x*x+z*z)/1000:GOSUB 190
130 ORIGIN 0,136:DEF FN f(x,z)=LOG(1+(x+z)*SGN(x+z))/10:GOSUB 190
140 ORIGIN 200,136:DEF FN f(x,z)=SGN(INT(23/(0.00001+x*x+z*z)))/3+SGN(INT(55/(0.00001+x*x+z*z)))/15:GOSUB 190
150 ORIGIN 400,136:DEF FN f(x,z)=EXP((x*x-z*z)/1000)-EXP((-(x*x-z*z)/1000)):GOSUB 190
160 ORIGIN 0,272:DEF FN f(x,z)=(-LOG(1+(x+z)*SGN(x+z)+2)/10):GOSUB 190
170 ORIGIN 200,272:DEF FN f(x,z)=(-EXP((x*x-z*z)/1000)/3):GOSUB 190
180 ORIGIN 400,272:DEF FN f(x,z)=-(EXP((x*x-z*z)/1100)-EXP((-(x*x-z*z)/1100))):GOSUB 190:END
190 FOR a=-fp/2 TO fp/2
200 FOR b=-ct/2 TO ct/2
210 x=a*20/ct:z=b*20/fp:y=FN f(x,z)
220 p((b+ct)/2,(a+fp)/2)=y*alto*(-1)
230 NEXT b,a
240 '
250 ' Dibujo plano ZY
260 '
270 FOR x=1 TO ct
280 x1=xg*x+fp*xg
290 z1=alto/2-x*zg+fp*zg+20*(-1)
300 zn=z1-zg-p(x,pf-1)
310 xn=x1-xg
320 FOR z=0 TO fp-1
330 xp=x1-z*xg
340 zp=z1-z*zg-p(x,pf-z)
350 PLOT xn+15,zn+20
360 DRAWR xp-xn,zp-zn
370 xn=xp:zn=zp
380 NEXT z,x
390 '
400 ' Dibujo plano XY
410 '
420 FOR z=1 TO pf
430 x1=xg*z
440 z1=alto/2+z*zg+20*(-1)
450 xn=x1+xg
460 zn=z1-zg-p(1,z)
470 FOR x=1 TO ct
480 xp=x1+x*xg
490 zp=z1-x*zg-p(x,z)
500 PLOT xn+15,zn+20
510 DRAWR xp-xn,zp-zn
520 xn=xp:zn=zp
530 NEXT x,z
540 RETURN