code for pendulum
>
circarr:=proc(center,start, angle,text,textsize,colr)
local arc,dir, HEAD, V1,V2,V3,v1,v2,v3,arccenter,
txt,tmp,rad,shift,head:
tmp:=evalf(start-center):
rad:=sqrt(tmp[1]^2+tmp[2]^2):
shift:=argument(tmp[1]+tmp[2]*I):
if evalf(shift) < 0 then shift:=shift+2*Pi: fi:
arc:=plot({[start],[center],[center[1]+rad*cos(shift+t),
center[2]+rad*sin(shift+t),t=0..angle]},thickness=3,
color=colr):dir:=.05*rad*(-sin(angle+shift)+
I*cos(angle+shift)):HEAD:=rad*[cos(angle+shift),
sin(angle+shift)]+center:
dir:=evalc(dir):
v1:=evalc(dir*(I-1)):v2:=evalc(dir*(-I-1)):v3:=0:
V1:=[Re(v1),Im(v1)]:
V2:=[Re(v2),Im(v2)]:
V3:=[Re(v3),Im(v3)]:
arccenter:=center+(rad/2)*[cos(angle/2+shift),
sin(angle/2+shift)]:
txt:=plots[textplot]([arccenter[1],
arccenter[2],text],font=[TIMES,BOLD,textsize]):
head:=plots[polygonplot]([V1+HEAD,V2+HEAD,V3+HEAD],
color=colr):
plots[display]({arc,head,txt},scaling=constrained):
end:
>
arcc:=plottools[arc]([0,0],10,
evalf(3*Pi/2-Pi/6)..evalf(3*Pi/2+Pi/6),thickness=3):
>
ht:=plot([[0,0],[0,-10]],linestyle=3,thickness=3):
base:=plot([[0,-10*cos(Pi/6)],[5,-10*cos(Pi/6)]],
linestyle=3,thickness=3):
rad:=plot([[0,0],[5,-10*cos(Pi/6)]],linestyle=1,
thickness=3):
circarrow:=circarr([0,0],[0,-5], Pi/6,`theta`,16,blue):
ball:=plottools[disk](
[5,-10*cos(Pi/6)],.31,color=black):
pivot:=plottools[disk](
[0,0],.15,color=black):
txtt:=plots[textplot]({[-.4,.4,`Q`],[-.4,-9.5,`y`],
[5.5,-10*cos(Pi/6)+.5,`P`],[4,-5,`10`],
[2.5,-10*cos(Pi/6)+.5,`x`]},font=[TIMES,BOLD,16]):
plots[display]({arcc,ht,base,rad,circarrow,ball,
txtt,pivot},axes=none,scaling=constrained);