(*Differentialgeometrie*)
(*Vivianikurve*)
r[t_]={10*Cos[t]*Cos[t],10*Cos[t]*Sin[t],10*Sin[t]}
dr[t_]=D[r[t],t]
ddr[t_]=D[dr[t],t]
tv[t_]=dr[t]/Norm[dr[t]];
bs[t_]=Cross[dr[t],ddr[t]];
bv[t_]=bs[t]/Norm[bs[t]];
nv[t_]=Cross[bv[t],tv[t]];
Kurvature[t_]=Simplify[Norm[Cross[dr[t],ddr[t]]]/Norm[dr[t]]^3]

rplot=ParametricPlot3D[r[t],{t,0,2*Pi},PlotStyle->{Red,Thickness[0.01]}]

Kugel[u_,v_]={10*Cos[u]*Sin[v],10*Sin[u]*Sin[v],10*Cos[v]}
Kugelplot=ParametricPlot3D[Kugel[u,v],{u,0,2*Pi},{v,0,Pi},
PlotStyle->{LightBlue,Opacity[0.5],Specularity[White,20],Mesh->{6,6}}]

Show[{Kugelplot,rplot},Boxed->False,ViewPoint->{1,1,0.2}]

rp=r[t]/.t->Pi/3
tp=rp+3*tv[t]/.t->Pi/3
bp=rp+3*bv[t]/.t->Pi/3
np=rp+3*nv[t]/.t->Pi/3
Tripplot=Graphics3D[{{Red,Point[rp]},{Orange,Line[{rp,tp}]},
{Blue,Line[{rp,bp}]},{Green,Line[{rp,np}]}}];

Show[rplot,Tripplot]

maxk=FindMaximum[Kurvature[t],t]
mink=FindMinimum[Kurvature[t],t]

mink[[2]][[1]][[2]]

Show[{rplot,Graphics3D[{Black,PointSize[Large],Point[r[t]/.t->maxk[[2]][[1]][[2]]]}],Graphics3D[{Black,PointSize[0.1],Point[r[t]/.t->mink[[2]][[1]][[2]]]}]},Boxed->False]

tm[t_]=r[t]+3*tv[t]//Together
bm[t_]=r[t]+3*bv[t]//Together;
nm[t_]=r[t]+3*nv[t]//Together;

Dimensions[tm[t]]

Manipulate[
Show[{ParametricPlot3D[r[t],{t,0,2*Pi}],Graphics3D[{Red,PointSize[Large],Point[r[t]]}],
Graphics3D[{Orange,Line[{r[t],tm[t]}]}],
Graphics3D[{Blue,Line[{r[t],bm[t]}]}],
Graphics3D[{Green,Line[{r[t],nm[t]}]}]
}
,ViewPoint->{1,1,0.1},Boxed->False,Axes->None],{t,0,2*Pi}]