library(DescTools) pendulum<-function(length=5,radius=1,circle.color="white",bg.color="white"){ tseq = c(seq(0,pi,by=.1),seq(pi,0,by=-.1)) slow=.27;fast=.07 sseq = c(seq(slow,fast,length.out = length(tseq)/4),seq(fast,slow,length.out = length(tseq)/4),seq(slow,fast,length.out = length(tseq)/4),seq(fast,slow,length.out = length(tseq)/4)) plot(0,0,xlim=c((-length-radius)*1.2,(length+radius)*1.2),ylim=c((-length-radius)*1.2,0),xaxt="n",yaxt="n",xlab="",ylab="") cat("Press Esc to end animation") while(T){ for(i in 1:length(tseq)){ rect(par("usr")[1],par("usr")[3],par("usr")[2],par("usr")[4],col = bg.color) abline(h=0,col="grey") points(0,0) DrawCircle((radius+length)*cos(tseq[i]),(radius+length)*-sin(tseq[i]),r.out=radius,col=circle.color) lines(c(0,length*cos(tseq[i])),c(0,length*-sin(tseq[i]))) Sys.sleep(sseq[i]) } } } pendulum(5,1,"gold","lightblue")