// Une fonction méconnue : windingnumber // Premier exemple pour la comprendre. size(8cm,0); path chemin=(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,4.3); dot(string(windingnumber(chemin,z)),z,.3E,5bp+blue); label("windingnumber(path, pair)",truepoint(N),N); label("undefined = "+string(undefined),truepoint(S),S);