Evolventu E (p) orientované křivky C určenou bodem dostaneme tak, že na tečnu v bodě naneseme (orientovanou) délku oblouku mezi p a q. Z mechanického hlediska jde tedy jako by o odvíjení nitě namotané na dané křivce (vždy ve směru tečny).
> restart
Pro jednoduchost uvažujme pouze křivky parametrizované obloukem. Procedura pro výpočet evolventy křivky f(s) v bodě f (c):
> involute:=proc(f,c)
> local s,df;
> df:=s->diff(f(s),s);
> s->evalm(f(s)+(c-s)*df(s));
end:
Mějme kružnici parametrizovanou obloukem a vykresleme několik jejích evolvent:
> circle:=s->[r*cos(s/r),r*sin(s/r)];
> inv:=involute(circle,c):inv(s);
> with(plots):setoptions(scaling=constrained):
> r:=2;
> CIRCLE_PLOT:=plot([circle(s)[1],circle(s)[2],s=0..2*Pi*r],thickness=2,color=red):
> INVOLUTE:=seq(plot([involute(circle,c)(s)[1],involute(circle,c)(s)[2],s=c..c+5*r],
color=blue),c=seq(j*Pi*r/3,j=0..6)):
> display(CIRCLE_PLOT,INVOLUTE);