// Lecture d'un fichier de données (avec les abscisses sur la première ligne,
// les ordonnées sur la deuxième, et le tableau des cotes à la suite.
// (fichier, téléchargeable ici : donnees.txt)
import graph3;
size3(150,IgnoreAspect);
currentlight=nolight;
file in=input("donnees.txt").line();
real[] x=in;
real[] y=in;
real[][] f=in.dimension(0,0);
triple f(pair t) {
int i=round(t.x);
int j=round(t.y);
return (x[i],y[j],f[i][j]);
}
draw(surface(f,(0,0),(x.length-1,y.length-1),x.length-1,y.length-1),
surfacepen=lightgray,meshpen=1bp+black);
// Calcul de la position de l'observateur
triple m=currentpicture.userMin;
triple M=currentpicture.userMax;
triple target=0.5*(m+M);
currentprojection=perspective(camera=target+realmult(dir(60,210),M-m),
target=target);
xaxis3(Label("$x$",position=MidPoint,align=-Y-Z),
Bounds(),blue,OutTicks(Label(align=-Y-X)));
yaxis3(Label("$y$",position=MidPoint,align=-5X),
Bounds(),red,OutTicks(Step=1,step=0.25));
zaxis3("$z$",Bounds(),darkgreen,OutTicks(Step=1,step=0.25));