Animations for the converse of the four vertex theorem

Maple source file: dahlfinal.mws

This webpage contains the animations referenced in D. DeTurck, H. Gluck, D. Pomerleano and D.S. Vick "The Four-vertex Theorem and its converse" (ArXiv paper 0609268), and the Maple commands that produced them. Scroll down to the bottom of this page to see the animations. The original Maple file can be found here.

>    restart;

>    with(plots,display,arrow);

The following draws the arc of a circle of radius r, starting at the point p with angle of inclination varying between t1 and t2 (c is the color of the arc).

>    arc:=(p,t1,t2,r,c)->plot([p[1]-r*cos(t1)+r*cos(s),p[2]-r*sin(t1)+r*sin(s),s=t1..t2],color=c,thickness=2,scaling=constrained);

The following draws a differentiable arc made up of sequence of n-1 circular arcs, starting from the origin -- the array A gives the inclination angles where the (radius of) curvature changes and the array R gives the radii of curvature of the successive arcs.

>    drawcurves:=proc(n,A,R) local Z,c,p,i;
c:=1;
Z:=arc([0,0],A[1],A[2],R[1],red):
p:=[0,0];
for i from 2 to n-1 do
c:=3-c;
p:=[p[1]-R[i-1]*cos(A[i-1])+R[i-1]*cos(A[i]),p[2]-R[i-1]*sin(A[i-1])+R[i-1]*sin(A[i])];
Z:=Z,arc(p,A[i],A[i+1],R[i],[red,blue][c]):
od;
display([Z]);
end;

The following draws a circle (of radius 1 centered at the point [-3,0.5]) that records the instructions from the array A -- the circle is divided into n-1 arcs at the angles in the array A, and the arcs are alternately colored red and blue. It also draws two lines that connect points 1 and 3 and points 2 and 4 on the circle.

>    drawcirc:=proc(n,A) local Z,c,P,i;
c:=1;
Z:=arc([-3,0],A[1],A[2],1,red):
P[1]:=[-3,0];
for i from 2 to n-1 do
c:=3-c;
P[i]:=[P[i-1][1]-cos(A[i-1])+cos(A[i]),P[i-1][2]-sin(A[i-1])+sin(A[i])];
Z:=Z,arc(P[i],A[i],A[i+1],1,[red,blue][c]):
od;
return([Z,plot({[[P[1][1],P[1][2]],[P[3][1],P[3][2]]],[P[2],P[4]]},color=black,thickness=1)]);
end;

The following draws both the circle and the arc pictures from the two preceding programs together. It adds an arrow that connects the beginning point of the differentiable curve to its ending point.

>    drawpicture:=proc(n,A,R) local Z,c,p,i,Q;
c:=1;
Z:=arc([0,0],A[1],A[2],R[1],red):
p:=[0,0];
for i from 2 to n-1 do
c:=3-c;
p:=[p[1]-R[i-1]*cos(A[i-1])+R[i-1]*cos(A[i]),p[2]-R[i-1]*sin(A[i-1])+R[i-1]*sin(A[i])];
Z:=Z,arc(p,A[i],A[i+1],R[i],[red,blue][c]):
od;
Q:=drawcirc(n,A);
p:=[p[1]-R[n-1]*cos(A[n-1])+R[n-1]*cos(A[n]),p[2]-R[n-1]*sin(A[n-1])+R[n-1]*sin(A[n])];
display([Z,seq(Q[i],i=1..n),arrow(p)]);
end;

>    q:=0.5;

q := .5

The following draws the animation given by a circle of radius 0.5 in the "configuration tetrahedron", orthogonal to the "core" of bicircles and centered at the bicircle given by the instructions of four equal (Gauss map image) arcs and radii 0.7 and 1.5

>    display([seq(drawpicture(5,[-Pi/2,-q*cos(2*Pi*j/40)/sqrt(2),Pi/2+q*sin(2*Pi*j/40),Pi+q*cos(2*Pi*j/40)/sqrt(2),3*Pi/2],[0.7,1.5,0.7,1.5,0.7]),j=0..39)],insequence=true,scaling=constrained);

[Maple Plot]

The following translates "Dahlberg instructions" -- a sequence of lengths and a pair of radii -- to "Gauss map instructions" (as above) and draws the corresponding picture.

>    dahlpic:=proc(d,r) local c;
c:=1/(2*Pi)*((d[1]+d[3])/r[1]+(d[2]+d[4])/r[2]);
drawpicture(5,[-Pi/2,-Pi/2+d[1]/(c*r[1]),-Pi/2+d[1]/(c*r[1])+d[2]/(c*r[2]),3*Pi/2-d[4]/(c*r[2]),3*Pi/2],[c*r[1],c*r[2],c*r[1],c*r[2],c*r[1]]);
end;

The following takes a vector of three input lengths and returns a "length input vector" for the preceding program that has the sum of the four lengths equal to 2*Pi

>    fix:=v->[v[1],v[2],v[3],2*Pi-(v[1]+v[2]+v[3])];

The following shows the animation given by a circle of radius 0.5 (q from before) in the "Dahlberg configuration tetrahedron" (the part of d[1], d[2], d[3]  space where the three coordinates are positive and sum to less than 2*Pi .  The circle is perpendicular to the core (the line connecting the points [Pi, 0, Pi]  to [0, Pi, 0]  and is centered at [Pi/2, Pi/2, Pi/2] .

>    display([seq(dahlpic(fix([Pi/2+q*cos(2*Pi*j/40)/sqrt(2)+q*sin(2*Pi*j/40)/sqrt(6),Pi/2+q*2*sin(2*Pi*j/40)/sqrt(6),Pi/2-q*cos(2*Pi*j/40)/sqrt(2)+q*sin(2*Pi*j/40)/sqrt(6)]),[0.7,1.5]),j=0..39)],insequence=true,scaling=constrained);

[Maple Plot]