// Une fonction méconnue : windingnumber // Deuxième exemple pour la comprendre. size(8cm,0); path chemin=reverse((0,0){dir(45)}..(1,0)..(1,.5)..(0,1)..(-.5,.8)..cycle); dot(chemin,5bp+.5green); draw(chemin,Arrow()); pair z; for(int k=0; k<50; ++k){ z=(-.75+2*unitrand(),-.75+2*unitrand()); dot(string(windingnumber(chemin,z)),z,.1E,1bp+red); } z=point(chemin,1.5); dot(string(windingnumber(chemin,z)),z,.3E,5bp+blue); label("windingnumber(path, pair)",truepoint(N),N); label("undefined = "+string(undefined),truepoint(S),S);