import graph; import patterns; usepackage("amsmath"); //usepackage("amsfonts"); //usepackage("MinionPro","fourierbb,mathlf,textosf"); usepackage("fourier"); add("hatch",hatch(4mm)); size(300,00); //unitsize(2cm); struct fctesc { real [] sub ; real [] vsub; real[] vpt; } fctesc operator init() {return new fctesc;} fctesc dftesc (real[] x, real []y, real [] z) { fctesc f; f.sub=x; f.vsub=y; f.vpt=z; return f; } real[] submin (real [] s1, real[] s2) { real [] fs; int n1=s1.length; int n2=s2.length; int i=0; int j=0; bool t2=true; bool t1=true; do { if(t1 && t2) { if(s1[i]s2[j]) {fs.push(s2[j]); j=j+1;} else {fs.push(s1[i]); i=i+1; j=j+1;} } } else { if(t1) {fs.push(s1[i]); i=i+1;}; if(t2) {fs.push(s2[j]); j=j+1;}; } if(i==n1) {t1=false;} if(j==n2) {t2=false;} } while (t1 || t2); return fs; }; fctesc fsubmin(fctesc f) { real [] sub=f.sub; real [] vsub=f.vsub; real [] vpt=f.vpt; real [] x,y,z; int n=sub.length; x.push(sub[0]); y.push(vsub[0]); z.push(vpt[0]); int n1=sub.length; int k=0; for (int i=1;if.sub[n-1])) { abort("cavapas");}; int i=search(f.sub,s); if(i==f.sub.length-1) { if(s==f.sub[i]) {r=f.vpt[i];} else { r=f.vsub[n-2]; } }; if(i0) {v=1;}; if(x==0) {v=0;}; return v; } void tracei (picture pic=currentpicture, fctesc f, pen p=currentpen) { add("hatch",hatch(4mm,p)); add("antihatch",hatch(4mm,NW,p)); fctesc fm; fm=fsubmin(f); int v; int n=fm.sub.length; real [] sub=fm.sub; real [] vsub=fm.vsub; v=ttest(vsub[0]); path g; g=(sub[0],0)--(sub[0],vsub[0])--(sub[1],vsub[0]); int w; for (int i=1;i=0 ; i=i-1) { g=g--(sub2[i+1],vsub2[i])--(sub2[i],vsub2[i]); } g=g--cycle; if(special) {fill(pic,g,p);} else { fill(pic,g,pattern("hatch")); }; } void tracesubd(picture pic=currentpicture, real [] a, fctesc f, string mt="x",pen p=currentpen) { int n=a.length; string stt; draw((a[0],0)--(a[0],vfctesc(f,a[0]+.00001)),dashed); stt="$"+mt+"_"+string(0)+"$"; label(stt,(a[0],0),N,Fill(white)); for (int i=1; i