m:=[[-2,sin(t)],[cos(t),sin(t)],
[cos(t)-cos(2*t),sin(t)-sin(2*t)]];
t:=n*2*Pi/100;
plot([m$n=-25..25],color=pink,
scaling=constrained,
axes=none);

m:=[[1,0],[cos(t),sin(t)],[cos(2*t),
sin(2*t)]];
t:=n*2*Pi/100;
scaling=constrained,
axes=none);

with(linalg):
a:=5:b:=3:r:=1.34:s:=2.9;
ll:=[a*cos(r),b*sin(r)]:
l:=[a*cos(s),b*sin(s)];
m:=[l,ll];
for k to 200 do u:=ll-l:
n:=[-b*ll[1]/a,-a*ll[2]/b]:
v:=u-2*dotprod(u , n)*n/dotprod(n,n):
t:=-2*(b^2*v[1]*ll[1]+a^2*ll[2]*v[2])/(b^2*v[1]^2 +a^2*v[2]^2):
lll:=ll+t*v:m:=[op(m),lll]:l:=ll:ll:=lll:od:

with(linalg):
a:=5:b:=3:r:=1.34:s:=5.9;
ll:=[a*cos(r),b*sin(r)]:
l:=[a*cos(s),b*sin(s)];
m:=[l,ll];
for k to 200 do u:=ll-l:
n:=[-b*ll[1]/a,-a*ll[2]/b]:
v:=u-2*dotprod(u , n)*n/dotprod(n,n):
t:=-2*(b^2*v[1]*ll[1]+a^2*ll[2]*v[2])/(b^2*v[1]^2 +a^2*v[2]^2):
lll:=ll+t*v:m:=[op(m),lll]:l:=ll:ll:=lll:od:

k:=-2;
x:=k*cos(t)-cos(k*t);
y:=k*sin(t)-sin(k*t);
plot([x,y,t=0..2*Pi],color=red,
scaling=constrained,axes=none);
x1:=diff(x,t);
y1:=diff(y,t);
x2:=diff(x1,t);
y2:=diff(y1,t);
f:=(x1^2+y1^2)/(x1*y2-y1*x2+0.000001);
xc:=x-f*y1;
yc:=y+f*x1;
m:=[[x,y],[xc,yc]];
t:=n*2*Pi/100;

k:=-3;
x:=k*cos(t)-cos(k*t);
y:=k*sin(t)-sin(k*t);
plot([x,y,t=0..2*Pi],color=red,
scaling=constrained,axes=none);
x1:=diff(x,t);
y1:=diff(y,t);
x2:=diff(x1,t);
y2:=diff(y1,t);
f:=(x1^2+y1^2)/(x1*y2-y1*x2+0.000001);
xc:=x-f*y1;
yc:=y+f*x1;
m:=[[x,y],[xc,yc]];
t:=n*2*Pi/100;

k:=2;
x:=k*cos(t)-cos(k*t);
y:=k*sin(t)-sin(k*t);
plot([x,y,t=0..2*Pi],color=red,
scaling=constrained,axes=none);
x1:=diff(x,t);
y1:=diff(y,t);
x2:=diff(x1,t);
y2:=diff(y1,t);
f:=(x1^2+y1^2)/(x1*y2-y1*x2+0.000001);
xc:=x-f*y1;
yc:=y+f*x1;
m:=[[x,y],[xc,yc]];
t:=n*2*Pi/100;

k:=3;
x:=k*cos(t)-cos(k*t);
y:=k*sin(t)-sin(k*t);
plot([x,y,t=0..2*Pi],color=red,
scaling=constrained,axes=none);
x1:=diff(x,t);
y1:=diff(y,t);
x2:=diff(x1,t);
y2:=diff(y1,t);
f:=(x1^2+y1^2)/(x1*y2-y1*x2+0.000001);
xc:=x-f*y1;
yc:=y+f*x1;
m:=[[x,y],[xc,yc]];
t:=n*2*Pi/100;
k:=-2;
x:=k*cos(t)-cos(k*t);
y:=k*sin(t)-sin(k*t);
p1:=plot([x,y,t=0..2*Pi],color=red,
scaling=constrained,axes=none):
x1:=diff(x,t);
y1:=diff(y,t);
x2:=diff(x1,t);
y2:=diff(y1,t);
f:=(x1^2+y1^2)/(x1*y2-y1*x2+0.000001);
xc:=x-f*y1;
yc:=y+f*x1;
p2:=plot([xc,yc,t=0..2*Pi],scaling=constrained,color=pink,axes=none):
r:=(x1^2+y1^2)^(3/2)/abs(x1*y2-y1*x2+0.000000000001);
with(plots):
p3:=animate([xc+r*cos(s),yc+r*sin(s),s=0..2*Pi],t=0..2*Pi,color=blue,frames=50):
p4:=animate([(1-s)*x+s*xc,(1-s)*y+s*yc,s=0..1],t=0..2*Pi,color=blue,frames=50):
k:=-3;
x:=k*cos(t)-cos(k*t);
y:=k*sin(t)-sin(k*t);
p1:=plot([x,y,t=0..2*Pi],color=red,
scaling=constrained,axes=none):
x1:=diff(x,t);
y1:=diff(y,t);
x2:=diff(x1,t);
y2:=diff(y1,t);
f:=(x1^2+y1^2)/(x1*y2-y1*x2+0.000001);
xc:=x-f*y1;
yc:=y+f*x1;
p2:=plot([xc,yc,t=0..2*Pi],scaling=constrained,color=pink,axes=none):
r:=(x1^2+y1^2)^(3/2)/abs(x1*y2-y1*x2+0.000000000001);
with(plots):
p3:=animate([xc+r*cos(s),yc+r*sin(s),s=0..2*Pi],t=0..2*Pi,color=blue,frames=50):
p4:=animate([(1-s)*x+s*xc,(1-s)*y+s*yc,s=0..1],t=0..2*Pi,color=blue,frames=50):
k:=2;
x:=k*cos(t)-cos(k*t);
y:=k*sin(t)-sin(k*t);
p1:=plot([x,y,t=0..2*Pi],color=red,
scaling=constrained,axes=none):
x1:=diff(x,t);
y1:=diff(y,t);
x2:=diff(x1,t);
y2:=diff(y1,t);
f:=(x1^2+y1^2)/(x1*y2-y1*x2+0.000001);
xc:=x-f*y1;
yc:=y+f*x1;
p2:=plot([xc,yc,t=0..2*Pi],scaling=constrained,color=pink,axes=none):
r:=(x1^2+y1^2)^(3/2)/abs(x1*y2-y1*x2+0.000000000001);
with(plots):
p3:=animate([xc+r*cos(s),yc+r*sin(s),s=0..2*Pi],t=0..2*Pi,color=blue,frames=50):
p4:=animate([(1-s)*x+s*xc,(1-s)*y+s*yc,s=0..1],t=0..2*Pi,color=blue,frames=50):
k:=3;
x:=k*cos(t)-cos(k*t);
y:=k*sin(t)-sin(k*t);
p1:=plot([x,y,t=0..2*Pi],color=red,
scaling=constrained,axes=none):
x1:=diff(x,t);
y1:=diff(y,t);
x2:=diff(x1,t);
y2:=diff(y1,t);
f:=(x1^2+y1^2)/(x1*y2-y1*x2+0.000001);
xc:=x-f*y1;
yc:=y+f*x1;
p2:=plot([xc,yc,t=0..2*Pi],
scaling=constrained,color=pink,axes=none):
r:=(x1^2+y1^2)^(3/2)/abs(x1*y2-y1*x2+0.000000000001);
with(plots):
p3:=animate([xc+r*cos(s),yc+r*sin(s),s=0..2*Pi],
t=0..2*Pi,color=blue,frames=50):
p4:=animate([(1-s)*x+s*xc,(1-s)*y+s*yc,s=0..1],
t=0..2*Pi,color=blue,frames=50):