/* Trois fonctions à connaitre : arctime, dirtime, reltime Illustrons dans cet exemple l'utilisation de reltime. real reltime(path p, real l); returns the time on path p at the relative fraction l of its arclength. */ size(7.5cm,0); path ligne=(-3,1){dir(45)}..(-1,2)..{dir(10)}(4,0); real rt1=reltime(ligne,0), rt2=reltime(ligne,.25), rt3=reltime(ligne,.50), rt4=reltime(ligne,.75), rt5=reltime(ligne,1); draw(ligne,blue); label(format("nombre de noeuds du chemin = %i",size(ligne)),(0,7)); label(format("nombre de sections du chemin = %i",length(ligne)),(0,6)); label(format("longueur du chemin = %f",arclength(ligne)),(0,5)); label(format("longueur de la section 1 = %f",arclength(subpath(ligne,0,1))),(0,4)); label(format("longueur de la section 2 = %f",arclength(subpath(ligne,1,2))),(0,3)); label(format("reltime(ligne,0) = %f",rt1),(0,-1)); label(format("reltime(ligne,0.25) = %f",rt2),(0,-2)); label(format("reltime(ligne,0.5) = %f",rt3),(0,-3)); label(format("reltime(ligne,0.75) = %f",rt4),(0,-4)); label(format("reltime(ligne,1) = %f",rt5),(0,-5)); pen p1=.9green,p2=blue; for (real k=0; k<=1; k+=0.25) { dot(Label(format("%.3f",k)),relpoint(ligne,k),2N,p1); label(Label(format("%.3f",reltime(ligne,k))),relpoint(ligne,k),2S,p2); label(Label(format("%.3f",reltime(ligne,k))),relpoint(ligne,k),2S,p2); } dot(ligne,4bp+red); shipout(bbox(3mm,white));