Construct the line segments joining points of the curve with the corresponding center of curvature for
each of the following: the nephroid, the astroid, the deltoid and the cardioid.
> restart:
> x:=3*cos(t)-cos(3*t):
> y:=3*sin(t)-sin(3*t):
> x1:=diff(x,t):
> y1:=diff(y,t):
> x2:=diff(x1,t):
> y2:=diff(y1,t):
> xc:=x-(x1^2+y1^2)*y1/(x1*y2-x2*y1):
> yc:=y+(x1^2+y1^2)*x1/(x1*y2-x2*y1):
> m:=[[x,y],[xc,yc]]:
> t:=k*2*Pi/100:
> m1:=evalf(m):
> plot([m1$k=1..100],color=red,scaling=constrained,axes=none);
> restart:
> x:=2*cos(t)-cos(2*t):
> y:=2*sin(t)-sin(2*t):
> x1:=diff(x,t):
> y1:=diff(y,t):
> x2:=diff(x1,t):
> y2:=diff(y1,t):
> xc:=x-(x1^2+y1^2)*y1/(x1*y2-x2*y1):
> yc:=y+(x1^2+y1^2)*x1/(x1*y2-x2*y1):
> m:=[[x,y],[xc,yc]]:
> t:=k*2*Pi/100:
> m1:=evalf(m):
> plot([m1$k=1..100],color=red,scaling=constrained,axes=none);
> restart:
> x:=(-2)*cos(t)-cos(-2*t):
> y:=(-2)*sin(t)-sin(-2*t):
> x1:=diff(x,t):
> y1:=diff(y,t):
> x2:=diff(x1,t):
> y2:=diff(y1,t):
> xc:=x-(x1^2+y1^2)*y1/(x1*y2-x2*y1):
> yc:=y+(x1^2+y1^2)*x1/(x1*y2-x2*y1):
> m:=[[x,y],[xc,yc]]:
> t:=k*2*Pi/100:
> m1:=evalf(m):
> plot([m1$k=1..100],color=red,scaling=constrained,axes=none);
> restart:
> x:=(-3)*cos(t)-cos(-3*t):
> y:=(-3)*sin(t)-sin(-3*t):
> x1:=diff(x,t):
> y1:=diff(y,t):
> x2:=diff(x1,t):
> y2:=diff(y1,t):
> xc:=x-(x1^2+y1^2)*y1/(x1*y2-x2*y1):
> yc:=y+(x1^2+y1^2)*x1/(x1*y2-x2*y1):
> m:=[[x,y],[xc,yc]]:
> t:=k*2*Pi/100:
> m1:=evalf(m):
> plot([m1$k=1..100],color=red,scaling=constrained,axes=none);
Construct an animation displaying the various positions of the osculating circle of the following
curves:
The astroid: (3 cos t + cos 3t, 3 sin t - sin 3t)
> restart:
> x:=evalf((-3)*cos(t)-cos(-3*t)):
> y:=evalf((-3)*sin(t)-sin(-3*t)):
> a:=plot([x,y,t=0..2*Pi],color=brown,scaling=constrained,axes=none):
> x1:=diff(x,t):
> y1:=diff(y,t):
> x2:=diff(x1,t):
> y2:=diff(y1,t):
> r:=(x1^2+y1^2)^(3/2)/abs(x1*y2-x2*y1):
> xc:=x-(x1^2+y1^2)*y1/(x1*y2-x2*y1):
> yc:=y+(x1^2+y1^2)*x1/(x1*y2-x2*y1):
> b:=plot([xc,yc,t=0..2*Pi],color=blue,scaling=constrained,axes=none):
> with(plots):
Warning, the name changecoords has been redefined
> c:=animate([xc+r*cos(s),yc+r*sin(s),s=0..2*Pi],t=0..2*Pi,frames=50,color=green,scaling=constrained,axes=none):
>
> d:=animate([(1-s)*xc+s*x,(1-s)*yc+s*y,s=0..1],t=0..2*Pi,frames=50,color=red,scaling=constrained,axes=none):
> display(a,b,c,d);
> restart:
> x:=evalf((-2)*cos(t)-cos(-2*t)):
> y:=evalf((-2)*sin(t)-sin(-2*t)):
> a:=plot([x,y,t=0..2*Pi],color=brown,scaling=constrained,axes=none):
> x1:=diff(x,t):
> y1:=diff(y,t):
> x2:=diff(x1,t):
> y2:=diff(y1,t):
> r:=(x1^2+y1^2)^(3/2)/abs(x1*y2-x2*y1):
> xc:=x-(x1^2+y1^2)*y1/(x1*y2-x2*y1):
> yc:=y+(x1^2+y1^2)*x1/(x1*y2-x2*y1):
> b:=plot([xc,yc,t=0..2*Pi],color=blue,scaling=constrained,axes=none):
> with(plots):
Warning, the name changecoords has been redefined
> c:=animate([xc+r*cos(s),yc+r*sin(s),s=0..2*Pi],t=0..2*Pi,frames=50,color=green,scaling=constrained,axes=none):
>
> d:=animate([(1-s)*xc+s*x,(1-s)*yc+s*y,s=0..1],t=0..2*Pi,frames=50,color=red,scaling=constrained,axes=none):
> display(a,b,c,d);
> restart:
> x:=evalf(2*cos(t)-cos(2*t)):
> y:=evalf(2*sin(t)-sin(2*t)):
> a:=plot([x,y,t=0..2*Pi],color=brown,scaling=constrained,axes=none):
> x1:=diff(x,t):
> y1:=diff(y,t):
> x2:=diff(x1,t):
> y2:=diff(y1,t):
> r:=(x1^2+y1^2)^(3/2)/abs(x1*y2-x2*y1):
> xc:=x-(x1^2+y1^2)*y1/(x1*y2-x2*y1):
> yc:=y+(x1^2+y1^2)*x1/(x1*y2-x2*y1):
> b:=plot([xc,yc,t=0..2*Pi],color=blue,scaling=constrained,axes=none):
> with(plots):
Warning, the name changecoords has been redefined
> c:=animate([xc+r*cos(s),yc+r*sin(s),s=0..2*Pi],t=0..2*Pi,frames=50,color=green,scaling=constrained,axes=none):
>
> d:=animate([(1-s)*xc+s*x,(1-s)*yc+s*y,s=0..1],t=0..2*Pi,frames=50,color=red,scaling=constrained,axes=none):
> display(a,b,c,d);
>