(*********************************************************************** Mathematica-Compatible Notebook This notebook can be used on any computer system with Mathematica 3.0, MathReader 3.0, or any compatible application. The data for the notebook starts with the line of stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. ***********************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 50952, 1263]*) (*NotebookOutlinePosition[ 51990, 1298]*) (* CellTagsIndexPosition[ 51905, 1292]*) (*WindowFrame->Normal*) Notebook[{ Cell[BoxData[ StyleBox[\(Y . \(Tazawa\ : \ IntroDiffGeom\)\), FontFamily->"Times"]], "Input", TextAlignment->Right, TextJustification->0, FontSize->10], Cell[TextData[{ "1.", StyleBox[" Decomposition of the curvature vector", FontFamily->"Times"] }], "Section", Evaluatable->False, AspectRatioFixed->True, FontColor->RGBColor[1, 0, 0], CellTags->"normal curvature 1"], Cell[TextData[{ StyleBox["normalcurvatureanim[f,cur,a,u0,u1,v0,v1,s0,s1,t0,t1,plotrng]", FontSize->14, FontWeight->"Bold", FontColor->RGBColor[0, 0, 1]], StyleBox[ " returns the animation of the curvature vetcor of the family of curvse \ cur[s][t], s0 < s < s1,t0 < t < t1, at the point cur[s][a] , where the \ curvature vector is decomposed into the direct sum of the normal curvature \ vector and the geodesic curfature vector, with the plot range plotrng.", FontSize->14, FontColor->RGBColor[0, 0, 1]] }], "Text"], Cell[CellGroupData[{ Cell["Commands", "Subsection", FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ \(<< LinearAlgebra`Orthogonalization`\)], "Input"], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{ RowBox[{ StyleBox["curvature3d", InitializationCell->True, AspectRatioFixed->True, FontColor->RGBColor[0, 0, 1]], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], StyleBox["c_", InitializationCell->True, AspectRatioFixed->True], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], StyleBox["t_", InitializationCell->True, AspectRatioFixed->True], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}], StyleBox[":=", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox[ \(Sqrt[\ Cross[D[c[u], u], D[c[u], {u, 2}]] . \n\ \ \ \ \ \ Cross[D[c[u], u], D[c[u], {u, 2}]]\ ]/\n\ \ \ \ \ \((\ D[c[u], u] . D[c[u], u])\)^\((3/2)\)\), InitializationCell->True, AspectRatioFixed->True], " ", "/.", " ", \(u -> t\)}]}], StyleBox[";", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], RowBox[{ RowBox[{ RowBox[{ StyleBox["torsion", InitializationCell->True, AspectRatioFixed->True, FontColor->RGBColor[1, 0, 0]], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], StyleBox["c_", InitializationCell->True, AspectRatioFixed->True], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], StyleBox["t_", InitializationCell->True, AspectRatioFixed->True], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}], StyleBox[":=", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox[ \(\((\ Cross[\ D[c[u], u], \ D[c[u], {u, 2}]\ ] . D[c[u], {u, 3}]\ )\)/\n\ \ \ \ \ \((Cross[\ D[c[u], u], D[c[u], {u, 2}]] . \n\ \ \ \ \ \ \ Cross[\ D[c[u], u], D[c[u], {u, 2}]])\)\), InitializationCell->True, AspectRatioFixed->True], " ", "/.", " ", \(u -> t\)}]}], StyleBox[";", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox[\(\(e11[c_]\)[t_]\), InitializationCell->True, AspectRatioFixed->True, FontColor->RGBColor[0, 0, 1]], StyleBox[ RowBox[{ StyleBox[":", InitializationCell->True, AspectRatioFixed->True, FontColor->RGBColor[0, 0, 1]], StyleBox["=", InitializationCell->True, AspectRatioFixed->True]}]], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], StyleBox[\(D[c[u], u]/Sqrt[D[c[u], u] . D[c[u], u]]\ /. \ u -> t\), InitializationCell->True, AspectRatioFixed->True]}], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], StyleBox[";", InitializationCell->True, AspectRatioFixed->True], "\n", RowBox[{ StyleBox[\(\(e33[c_]\)[t_]\), InitializationCell->True, AspectRatioFixed->True, FontColor->RGBColor[0, 0, 1]], StyleBox[ RowBox[{ StyleBox[":", InitializationCell->True, AspectRatioFixed->True, FontColor->RGBColor[0, 0, 1]], StyleBox["=", InitializationCell->True, AspectRatioFixed->True]}]], StyleBox[ \(Cross[D[c[u], u], D[c[u], {u, 2}]]/\n\ \ \ \ \ \ \ \ \ Sqrt[Cross[D[c[u], u], D[c[u], {u, 2}]] . \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ Cross[D[c[u], u], D[c[u], {u, 2}]]]\ /. u -> t\), InitializationCell->True, AspectRatioFixed->True]}], StyleBox[";", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox[\(\(e22[c_]\)[t_]\), InitializationCell->True, AspectRatioFixed->True, FontColor->RGBColor[0, 0, 1]], StyleBox[ RowBox[{ StyleBox[":", InitializationCell->True, AspectRatioFixed->True, FontColor->RGBColor[0, 0, 1]], StyleBox["=", InitializationCell->True, AspectRatioFixed->True]}]], StyleBox[\(Cross[\(e33[c]\)[t], \(e11[c]\)[t]]\), InitializationCell->True, AspectRatioFixed->True]}], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], StyleBox[";", InitializationCell->True, AspectRatioFixed->True]}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{ RowBox[{ StyleBox["tangt", InitializationCell->True, AspectRatioFixed->True, FontColor->RGBColor[0, 0, 1]], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], StyleBox["c_", InitializationCell->True, AspectRatioFixed->True], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], StyleBox["t_", InitializationCell->True, AspectRatioFixed->True], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}], StyleBox[":=", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], StyleBox[ \(Graphics3D[\n \ \ \ \ \ \ \ \ \ \ \ \ \ {\ RGBColor[1, 0, 0], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PointSize[ .04], Point[c[t]], \n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Thickness[ .01], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Line[{c[t], c[t] + \(e11[c]\)[t]}]}\ , \ Boxed -> False\ ]\), InitializationCell->True, AspectRatioFixed->True]}], StyleBox[";", InitializationCell->True, AspectRatioFixed->True], "\n", RowBox[{ RowBox[{ RowBox[{ StyleBox["norml", InitializationCell->True, AspectRatioFixed->True, FontColor->RGBColor[0, 0, 1]], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], StyleBox["c_", InitializationCell->True, AspectRatioFixed->True], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], StyleBox["t_", InitializationCell->True, AspectRatioFixed->True], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}], StyleBox[":=", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox["Graphics3D", InitializationCell->True, AspectRatioFixed->True], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], RowBox[{ RowBox[{"{", StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], RowBox[{ RowBox[{ StyleBox["{", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], StyleBox[\(RGBColor[1, 0, 0], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PointSize[ .04], Point[c[t]]\), InitializationCell->True, AspectRatioFixed->True], StyleBox["}", FontColor->GrayLevel[0]]}], StyleBox[",", FontColor->GrayLevel[0]], StyleBox["\n", FontColor->GrayLevel[0]], StyleBox["\t\t\t", FontColor->GrayLevel[0]], StyleBox[ \({\ \ RGBColor[0, 0, 1], Thickness[ .01], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Line[{c[t], c[t] + \(e22[c]\)[t]}]}\), InitializationCell->True, AspectRatioFixed->True, FontColor->GrayLevel[0]]}], "}"}], StyleBox[",", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], StyleBox[\(Boxed -> False\), InitializationCell->True, AspectRatioFixed->True]}], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}]}], StyleBox[";", InitializationCell->True, AspectRatioFixed->True], "\n", RowBox[{ RowBox[{ RowBox[{ StyleBox["binml", InitializationCell->True, AspectRatioFixed->True, FontColor->RGBColor[0, 0, 1]], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], StyleBox["c_", InitializationCell->True, AspectRatioFixed->True], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], StyleBox["t_", InitializationCell->True, AspectRatioFixed->True], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}], StyleBox[":=", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], StyleBox[ \(Graphics3D[ \ {\ \ \ {\ RGBColor[1, 0, 0], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PointSize[ .04], Point[c[t]]}, \n \ {\ \ RGBColor[0, 1, 0], Thickness[ .01], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Line[{c[t], c[t] + \(e33[c]\)[t]}]}\ }, \ Boxed -> False\ ] \), InitializationCell->True, AspectRatioFixed->True]}], StyleBox[";", InitializationCell->True, AspectRatioFixed->True], "\n", RowBox[{ RowBox[{ RowBox[{ StyleBox["curvaturevector", FontColor->RGBColor[0, 0, 1]], "[", "c_", "]"}], "[", "t_", "]"}], ":=", " ", RowBox[{ StyleBox[\(\(curvature3d[c]\)[t]\), InitializationCell->True, AspectRatioFixed->True], "*", \(\(e22[c]\)[t]\)}]}], ";", "\n", RowBox[{ RowBox[{ RowBox[{ StyleBox["curvaturearrow", FontColor->RGBColor[0, 0, 1]], "[", "c_", "]"}], "[", "t_", "]"}], ":=", " ", RowBox[{"Graphics3D", "[", RowBox[{ RowBox[{"{", " ", RowBox[{ \({\ RGBColor[1, 0, 0], \n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PointSize[ .04], Point[c[t]]}\), ",", "\n", "\t\t\t", RowBox[{"{", " ", RowBox[{ \(RGBColor[0, 0, 1]\), ",", \(Thickness[ .01]\), ",", "\n", " ", RowBox[{"Line", "[", RowBox[{"{", RowBox[{\(c[t]\), ",", RowBox[{\(c[t]\), "+", StyleBox[\(\(curvaturevector[c]\)[t]\), InitializationCell->True, AspectRatioFixed->True]}]}], "}"}], "]"}]}], "}"}]}], "}"}], ",", " ", \(Boxed -> False\)}], " ", "]"}]}], ";"}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{ StyleBox["puu", FontColor->RGBColor[0, 0, 1]], "[", \(f_, u_, v_\), "]"}], "=", \(D[f[uu, v], uu]\ /. uu -> u\)}], ";", "\n", RowBox[{ RowBox[{ StyleBox["pvv", FontColor->RGBColor[0, 0, 1]], "[", \(f_, u_, v_\), "]"}], "=", \(D[f[u, vv], vv]\ /. vv -> v\)}], ";", "\n", RowBox[{ RowBox[{ StyleBox["n", FontColor->RGBColor[0, 0, 1]], "[", \(f_, u_, v_\), "]"}], "=", \(Cross[puu[f, u, v], pvv[f, u, v]]/\n\ \ \ \ \ \ \ \ \ \ \ \ Sqrt[Cross[puu[f, u, v], pvv[f, u, v]] . \n\ \ \ \ \ \ \ \ \ \ \ \ Cross[puu[f, u, v], pvv[f, u, v]]]\)}], ";", "\n", RowBox[{ RowBox[{ StyleBox["puu11", FontColor->RGBColor[0, 0, 1]], "[", \(f_, u_, v_\), "]"}], "=", \(puu[f, u, v]/Sqrt[puu[f, u, v] . puu[f, u, v]]\)}], ";", "\n", RowBox[{ RowBox[{ StyleBox["pvv11", FontColor->RGBColor[0, 0, 1]], "[", \(f_, u_, v_\), "]"}], "=", \(Cross[n[f, u, v], puu11[f, u, v]]\)}], ";"}]], "Input"], Cell[BoxData[ \(ll[f_, u_, v_] = \((D[f[uu, v], {uu, 2}]\ /. uu -> u)\) . n[f, u, v]; \nmm[f_, u_, v_] = \((D[\((D[f[uu, vv], uu] /. uu -> u)\)\ , \n\ \ \ \ \ \ \ \ \ \ vv] /. vv -> v)\) . n[f, u, v]; \n nn[f_, u_, v_] = \((D[f[u, vv], {vv, 2}]\ /. vv -> v)\) . n[f, u, v]; \n del[f_, u_, v_] = N[ll[f, u, v]*nn[f, u, v] + mm[f, u, v]^2]; \n \(orthframe[f_]\)[u_, v_] := Inverse[Transpose[ GramSchmidt[\n \ \ \ \ {N[puu[f, u, v]], N[pvv[f, u, v]], N[n[f, u, v]]}]]]; \n \(\(hh[f_]\)[a_, b_]\)[u_, v_] = N[n[f, a, b]] . N[f[u, v] - f[a, b]]; \)], "Input"], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{ StyleBox[\(cc[f_, c_]\), FontColor->RGBColor[0, 0, 1]], "[", "t_", "]"}], ":=", \(f[\(c[t]\)[\([1]\)], \(c[t]\)[\([2]\)]]\)}], ";"}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{ StyleBox["normlcurvvect", FontColor->RGBColor[0, 0, 1]], "[", \(f_, c_, a_\), "]"}], ":=", "\n", "\t\t\t", \(\((\(curvaturevector[cc[f, c]]\)[a] . n[f, \(c[a]\)[\([1]\)], \(c[a]\)[\([2]\)]])\)* n[f, \(c[a]\)[\([1]\)], \(c[a]\)[\([2]\)]]\)}], ";"}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{ StyleBox["normlcurvarrow", FontColor->RGBColor[0, 0, 1]], "[", \(f_, c_, a_\), "]"}], ":=", StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], StyleBox[ \(Graphics3D[\n \ \ \ \ \ \ \ \ \ \ \ \ \ {\ RGBColor[1, 0, 0], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PointSize[ .04], Point[\(cc[f, c]\)[a]], \n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Thickness[ .01], \n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Line[{\(cc[f, c]\)[a], \(cc[f, c]\)[a] + normlcurvvect[f, c, a]}]}\ , \ Boxed -> False\ ]\), InitializationCell->True, AspectRatioFixed->True]}], StyleBox[";", InitializationCell->True, AspectRatioFixed->True]}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{ StyleBox["geodcurvvect", FontColor->RGBColor[0, 0, 1]], "[", \(f_, c_, a_\), "]"}], ":=", "\n", "\t\t", \(\(curvaturevector[cc[f, c]]\)[a] - normlcurvvect[f, c, a]\)}], ";"}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{ StyleBox["geodcurvarrow", FontColor->RGBColor[0, 0, 1]], "[", \(f_, c_, a_\), "]"}], ":=", StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], StyleBox[ \(Graphics3D[\n \ \ \ \ \ \ \ \ \ \ \ \ \ {\ RGBColor[0, 1, 0], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PointSize[ .04], Point[\(cc[f, c]\)[a]], \n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Thickness[ .01], \n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Line[{\(cc[f, c]\)[a], \(cc[f, c]\)[a] + geodcurvvect[f, c, a]}]}\ , \ Boxed -> False\ ]\), InitializationCell->True, AspectRatioFixed->True]}], StyleBox[";", InitializationCell->True, AspectRatioFixed->True]}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{ StyleBox["normlcuvframe", FontColor->RGBColor[0, 0, 1]], "[", \(f_, c_, a_\), "]"}], ":=", StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], StyleBox[ \(Graphics3D[\n \t{\ {\ RGBColor[1, 0, 0], \n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PointSize[ .03], Point[\(cc[f, c]\)[a]], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Thickness[ .01], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Line[{\(cc[f, c]\)[a], \(cc[f, c]\)[a] + normlcurvvect[f, c, a]}]}\ \ , \ \n \t\t\ \ {\ RGBColor[0, 1, 0], \n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PointSize[ .04], Point[\(cc[f, c]\)[a]], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Thickness[ .01], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Line[{\(cc[f, c]\)[a], \(cc[f, c]\)[a] + geodcurvvect[f, c, a]}]}\ , \n \t\ {\ RGBColor[1, 0, 0], \n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PointSize[ .04], Point[\(cc[f, c]\)[a]]}, \n \t\t{\ \ RGBColor[0, 0, 1], Thickness[ .01], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Line[{\(cc[f, c]\)[a], \(cc[f, c]\)[a] + \(curvaturevector[cc[f, c]]\)[a]}]}\t, \n \t\t{\ Thickness[ .004], Dashing[{0.01, 0.01}], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Line[{\(cc[f, c]\)[a] + normlcurvvect[f, c, a], \n \t\t\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(cc[f, c]\)[a] + \(curvaturevector[cc[f, c]]\)[a], \n \t\t\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \(cc[f, c]\)[a] + geodcurvvect[f, c, a]}]}\ \ \t}]\), InitializationCell->True, AspectRatioFixed->True]}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{ RowBox[{ StyleBox["gr", FontColor->RGBColor[0, 0, 1]], "[", \(f_, c_, t0_, t1_\), "]"}], ":=", StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox["Graphics3D", InitializationCell->True, AspectRatioFixed->True], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], StyleBox["\t\t", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox["{", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox[\(Thickness[ .008]\), InitializationCell->True, AspectRatioFixed->True], StyleBox[",", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox["Line", InitializationCell->True, AspectRatioFixed->True], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], \(Table[\(cc[f, c]\)[t], \ \ {t, t0, t1, \((t1 - t0)\)/64}\ \ \ ]\), StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}]}], StyleBox["\t", InitializationCell->True, AspectRatioFixed->True], StyleBox["}", InitializationCell->True, AspectRatioFixed->True]}], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}]}], ";"}]], "Input"], Cell[CellGroupData[{ Cell[BoxData[ RowBox[{"(*", " ", StyleBox["mywireframe77", AspectRatioFixed->True, FontColor->RGBColor[1, 0, 0]], StyleBox[" ", AspectRatioFixed->True, FontColor->RGBColor[1, 0, 0]], StyleBox["*)", AspectRatioFixed->True, FontColor->RGBColor[1, 0, 0]]}]], "Input"], Cell[TextData[{ StyleBox["mywireframe77", AspectRatioFixed->True, FontColor->RGBColor[1, 0, 0]], StyleBox[ "[f_,u0_,u1_,v0_,v1_,m_,n_,opts___]:={\nDo[u[i]=u0+i*(u1-u0)/m,{i,0,m}];\n\ Do[v[j]=v0+j*(v1-v0)/n,{j,0,n}];\nDo[g[i,j]=f[u[i],v[j]]//N, \ {i,0,m},{j,0,n}];\n\ normalvector[u_,v_]=Cross[D[f[uu,v],uu]/.uu->u,D[f[u,vv],vv]/.vv->v];\n\ Do[norml[i,j]=Evaluate[normalvector[u[i],v[j]]],{i,0,m},{j,0,n}];\n\n\ Do[jaco[i,j]=Max[0.001,Evaluate[Sqrt[norml[i,j].norml[i,j]]//N]],\n \ {i,0,m},{j,0,n}];\n\nDo[lightcolor[i,j]=\nRGBColor[\n ", AspectRatioFixed->True], StyleBox[ " (1+(1/(jaco[i,j]*Sqrt[3]))*norml[i,j].{1,-1,1})/2 //N,\n \ (1+(1/(jaco[i,j]*Sqrt[2]))*norml[i,j].{ 1,0,1})/3 //N,\n \ (1+(1/(jaco[i,j]*Sqrt[3]))*norml[i,j].{-1,1,1})/2 //N],", AspectRatioFixed->True, FontColor->RGBColor[0, 0, 1]], StyleBox[ "\n {i,0,m},{j,0,n}];\n\n\ uucurve[i_,j_]=Graphics3D[{Thickness[0.001],lightcolor[i,j],\n \ Line[{g[i,j],g[i+1,j]}]}];\n\ vvcurve[i_,j_]=Graphics3D[{Thickness[0.001],lightcolor[i,j],\n \ Line[{g[i,j],g[i,j+1]}]}];\n\nh[i_,j_]=g[i,j]-0.001*norml[i,j]/jaco[i,j];\n\ uucurve11[i_,j_]=Graphics3D[\n \ {Thickness[0.002],RGBColor[1,1,1],Dashing[{0.005,0.01}],\n \ Line[{h[i,j],h[i+1,j]}]}];\nvvcurve11[i_,j_]=Graphics3D[\n \ {Thickness[0.002],RGBColor[1,1,1],Dashing[{0.005,0.01}],\n \ Line[{h[i,j],h[i,j+1]}]}];\n \nwireframe[f]=Show[Join[\n \ Table[uucurve[i,j],{i,0,m-1},{j,0,n}],\n \ Table[vvcurve[i,j],{i,0,m},{j,0,n-1}],\n \ Table[uucurve11[i,j],{i,0,m-1},{j,0,n}],\n \ Table[vvcurve11[i,j],{i,0,m},{j,0,n-1}]],Boxed->False,\n ", AspectRatioFixed->True], "DisplayFunction->", StyleBox["Identity];}", AspectRatioFixed->True] }], "Input", AspectRatioFixed->True] }, Closed]], Cell[BoxData[ RowBox[{ RowBox[{ StyleBox["normalcurvatureanim", FontColor->RGBColor[0, 0, 1]], "[", \(f_, cur_, a_, u0_, u1_, v0_, v1_, s0_, s1_, t0_, t1_, plotrng__\), "]"}], ":=", RowBox[{"{", "\n", "\n", RowBox[{ \(mat = \(orthframe[f]\)[\(\(cur[s0]\)[a]\)[\([1]\)], \(\(cur[s0]\)[a]\)[\([2]\)]]\), ";", "\n", \(p00 = f[\(\(cur[s0]\)[a]\)[\([1]\)], \(\(cur[s0]\)[a]\)[\([2]\)]] \), ";", "\n", \(f00[u_, v_] = Evaluate[mat . \((f[u, v] - p00)\)]\), ";", "\t\t\t\t", "\n", RowBox[{ StyleBox["mywireframe77", AspectRatioFixed->True, FontColor->RGBColor[1, 0, 0]], StyleBox["[", AspectRatioFixed->True], StyleBox[\(f00, u0, u1, v0, v1, 15, 15\), AspectRatioFixed->True], StyleBox["]", AspectRatioFixed->True]}], StyleBox[" ", AspectRatioFixed->True], StyleBox[";", AspectRatioFixed->True], "\t\t", "\n", "\n", \(Do[\(cur00[i]\)[t_] = Expand[Evaluate[mat . \((\(cc[f, cur[i/24]]\)[t] - p00)\)]], { i, 0, 24}]\), ";", "\t", "\n", RowBox[{"Do", "[", RowBox[{ RowBox[{\(c00[i]\), "=", StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox["Graphics3D", InitializationCell->True, AspectRatioFixed->True], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], StyleBox["\t\t", InitializationCell->True, AspectRatioFixed->True], RowBox[{ RowBox[{ StyleBox["{", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox[\(Thickness[ .008]\), InitializationCell->True, AspectRatioFixed->True], StyleBox[",", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox["Line", InitializationCell->True, AspectRatioFixed->True], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], \(Table[\(cur00[i]\)[t], \ \n \t\t\t\t\t\t\t\t\t\t\ {t, t0, t1, \((t1 - t0)\)/24}\ \ \ ]\), StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}]}], StyleBox["\t", InitializationCell->True, AspectRatioFixed->True], StyleBox["}", InitializationCell->True, AspectRatioFixed->True]}], StyleBox[",", InitializationCell->True, AspectRatioFixed->True], \(Boxed -> False\)}], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}]}], ",", \({i, 0, 24}\)}], "]"}], "\t", ";", "\t\t", "\n", "\t\t", "\n", RowBox[{"Do", "[", RowBox[{ RowBox[{ RowBox[{ StyleBox["curvaturevector00", FontColor->RGBColor[0, 0, 1]], "[", "i", "]"}], "=", RowBox[{ RowBox[{ StyleBox["curvaturevector", FontColor->RGBColor[0, 0, 1]], "[", \(cur00[i]\), "]"}], "[", "a", "]"}]}], ",", \({i, 0, 24}\)}], "]"}], ";", "\n", RowBox[{"Do", "[", RowBox[{ RowBox[{\(normlcurvvect00[i]\), "=", RowBox[{ RowBox[{"(", RowBox[{ RowBox[{ StyleBox["curvaturevector00", FontColor->RGBColor[0, 0, 1]], "[", "i", "]"}], ".", \({0, 0, 1}\)}], ")"}], "*", \({0, 0, 1}\)}]}], ",", \({i, 0, 24}\)}], "]"}], "\t", ";", "\t", "\n", "\t\t", "\n", RowBox[{"Do", "[", RowBox[{ RowBox[{\(geodcurvvect00[i]\), "=", RowBox[{ RowBox[{ StyleBox["curvaturevector00", FontColor->RGBColor[0, 0, 1]], "[", "i", "]"}], "-", \(normlcurvvect00[i]\)}]}], ",", \({i, 0, 24}\)}], "]"}], "\t", ";", "\t", "\n", "\t\t\t\t\t", "\n", RowBox[{"Do", "[", RowBox[{ RowBox[{ RowBox[{ StyleBox["normlcuvframe00", FontColor->RGBColor[0, 0, 1]], "[", "i", "]"}], "=", StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox["Graphics3D", InitializationCell->True, AspectRatioFixed->True], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], StyleBox["\t", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox["{", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox[ \({\ RGBColor[1, 0, 0], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ PointSize[ .03], Point[{0, 0, 0}], \n\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Thickness[ .01], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Line[{{0, 0, 0}, normlcurvvect00[i]}]}\), InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], StyleBox[",", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], StyleBox["\t\t ", InitializationCell->True, AspectRatioFixed->True], StyleBox[ \({\ RGBColor[0, 1, 0], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Thickness[ .01], \n \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Line[{{0, 0, 0}, geodcurvvect00[i]}]}\), InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], StyleBox[",", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], StyleBox["\t\t", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox["{", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox[\(RGBColor[0, 0, 1]\), InitializationCell->True, AspectRatioFixed->True], StyleBox[",", InitializationCell->True, AspectRatioFixed->True], StyleBox[\(Thickness[ .01]\), InitializationCell->True, AspectRatioFixed->True], StyleBox[",", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox["Line", InitializationCell->True, AspectRatioFixed->True], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox["{", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox[\({0, 0, 0}\), InitializationCell->True, AspectRatioFixed->True], StyleBox[",", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox["curvaturevector00", InitializationCell->True, AspectRatioFixed->True, FontColor->RGBColor[0, 0, 1]], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], StyleBox["i", InitializationCell->True, AspectRatioFixed->True], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}]}], StyleBox["}", InitializationCell->True, AspectRatioFixed->True]}], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}]}], StyleBox["}", InitializationCell->True, AspectRatioFixed->True]}], StyleBox["\t", InitializationCell->True, AspectRatioFixed->True], StyleBox[",", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], StyleBox["\t\t", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox["{", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox[\(Thickness[ .004]\), InitializationCell->True, AspectRatioFixed->True], StyleBox[",", InitializationCell->True, AspectRatioFixed->True], StyleBox[\(Dashing[{0.01, 0.01}]\), InitializationCell->True, AspectRatioFixed->True], StyleBox[",", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox["Line", InitializationCell->True, AspectRatioFixed->True], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox["{", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox[\(normlcurvvect00[i]\), InitializationCell->True, AspectRatioFixed->True], StyleBox[",", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], StyleBox["\t\t", InitializationCell->True, AspectRatioFixed->True], RowBox[{ StyleBox["curvaturevector00", InitializationCell->True, AspectRatioFixed->True, FontColor->RGBColor[0, 0, 1]], StyleBox["[", InitializationCell->True, AspectRatioFixed->True], StyleBox["i", InitializationCell->True, AspectRatioFixed->True], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}], StyleBox[",", InitializationCell->True, AspectRatioFixed->True], StyleBox["\n", InitializationCell->True, AspectRatioFixed->True], StyleBox[" ", InitializationCell->True, AspectRatioFixed->True], StyleBox[\(geodcurvvect00[i]\), InitializationCell->True, AspectRatioFixed->True]}], StyleBox["}", InitializationCell->True, AspectRatioFixed->True]}], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}]}], StyleBox["}", InitializationCell->True, AspectRatioFixed->True]}]}], StyleBox[" \t", InitializationCell->True, AspectRatioFixed->True], StyleBox["}", InitializationCell->True, AspectRatioFixed->True]}], StyleBox["]", InitializationCell->True, AspectRatioFixed->True]}]}], ",", \({i, 0, 24}\)}], "]"}], "\t", ";", "\t\t\t\t", "\n", "\t\t", "\n", "\t\t", RowBox[{"Do", "[", RowBox[{ RowBox[{"{", RowBox[{ RowBox[{"Show", "[", RowBox[{\(c00[i]\), ",", \(wireframe[f00]\), ",", RowBox[{ StyleBox["normlcuvframe00", FontColor->RGBColor[0, 0, 1]], "[", "i", "]"}], StyleBox[",", FontColor->RGBColor[0, 0, 1]], RowBox[{ StyleBox["PlotRange", FontColor->RGBColor[0, 0, 1]], StyleBox["->", FontColor->RGBColor[0, 0, 1]], "plotrng"}], ",", \(DisplayFunction -> $DisplayFunction\)}], "]"}], ";"}], "\t\t", "}"}], ",", "\n", "\t\t\t", \({i, 0, 24}\)}], "]"}], "\t", ";"}], "\n", "\t\t\t\t\t", "\n", "\t", "}"}]}]], "Input"] }, Closed]], Cell[CellGroupData[{ Cell["Examples", "Subsection", FontColor->RGBColor[0, 0, 1]], Cell[BoxData[ RowBox[{ RowBox[{\(\(\(curve[a_]\)[s_]\)[t_]\), "=", RowBox[{ RowBox[{\((1 - s)\), "*", RowBox[{"{", RowBox[{ RowBox[{"t", "-", RowBox[{ StyleBox["0.35245210782236338`", StyleBoxAutoDelete->True, PrintPrecision->2], " ", \(t\^2\)}], "-", RowBox[{ StyleBox["0.907821921465810888`", StyleBoxAutoDelete->True, PrintPrecision->2], " ", \(t\^3\)}], "+", RowBox[{ StyleBox["0.772701279794965945`", StyleBoxAutoDelete->True, PrintPrecision->2], " ", \(t\^4\)}]}], ",", RowBox[{\(Tan[a]*t\), "+", RowBox[{ StyleBox["0.505267420646303033`", StyleBoxAutoDelete->True, PrintPrecision->2], " ", \(t\^2\)}], "-", RowBox[{ StyleBox["0.292350902448595739`", StyleBoxAutoDelete->True, PrintPrecision->2], " ", \(t\^3\)}], "+", RowBox[{ StyleBox["0.252070107844990953`", StyleBoxAutoDelete->True, PrintPrecision->2], " ", \(t\^4\)}]}]}], "}"}]}], "+", RowBox[{"s", "*", RowBox[{"{", RowBox[{ RowBox[{"t", "+", RowBox[{ StyleBox["0.488480409003632587`", StyleBoxAutoDelete->True, PrintPrecision->2], " ", \(t\^2\)}], "+", RowBox[{ StyleBox["0.377562648594022665`", StyleBoxAutoDelete->True, PrintPrecision->2], " ", \(t\^3\)}], "-", RowBox[{ StyleBox["0.160027039024257629`", StyleBoxAutoDelete->True, PrintPrecision->2], " ", \(t\^4\)}]}], ",", RowBox[{\(Tan[a]*t\), "+", RowBox[{ RowBox[{"-", StyleBox["0.862714679086310631`", StyleBoxAutoDelete->True, PrintPrecision->2]}], " ", \(t\^2\)}], "+", RowBox[{ StyleBox["0.952057423648670742`", StyleBoxAutoDelete->True, PrintPrecision->2], " ", \(t\^3\)}], "-", RowBox[{ StyleBox["0.722667029646625014`", StyleBoxAutoDelete->True, PrintPrecision->2], " ", \(t\^4\)}]}]}], "}"}]}]}]}], ";", "\n", \(\(cccc[s_]\)[t_] = \(\(curve[\(-Pi\)/6]\)[s]\)[t]\), ";", "\n", \(gg[u_, v_] = \(-\((1/2)\)\)* \((\(-0.504559220924242635`\)\ u - 0.453240619588462045`\ u\^2 + 0.627566003641022618`\ u\^3 + 0.622012731244826699`\ u\^4 + 0.092467002431174627`\ v + 0.0790435876925237312`\ u\ v - 0.561513065358655971`\ u\^2\ v - 0.0248413340612025912`\ u\^3\ v - 0.529239445527752838`\ v\^2 + 0.750301480141483523`\ u\ v\^2 - 0.868532025180894962`\ u\^2\ v\^2 + 0.254305840874257871`\ v\^3 + 0.586887903557732393`\ u\ v\^3 + 0.486359632850188461`\ v\^4)\)\), ";", "\n", \(ff[u_, v_] = {u, v, gg[u, v]}\), ";"}]], "Input"], Cell[BoxData[ RowBox[{ RowBox[{ StyleBox["normalcurvatureanim", FontColor->RGBColor[0, 0, 1]], "[", \(ff, cccc, 0, \(-0.8\), 0.8, \(-0.8\), 0.8, \(-1\), 2, \(-0.6\), 0.6, {{\(-0.85\), 0.85}, {\(-0.85\), 0.85}, {\(-0.5\), 1.2}}\), "]"}], " "}]], "Input"] }, Closed]] }, FrontEndVersion->"Macintosh 3.0", ScreenRectangle->{{0, 832}, {0, 604}}, CellGrouping->Manual, WindowSize->{521, 505}, WindowMargins->{{26, Automatic}, {Automatic, 2}}, MacintoshSystemPageSetup->"\<\ 00<0001804P000000`d26_oRon<3;08f0dL5N`?P0080001804P000000cH2=001 0000I00000400`<30?l00BL?00400@0000000000000006P801T1T0000000P000 00000000004000000000000000000000\>" ] (*********************************************************************** Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. ***********************************************************************) (*CellTagsOutline CellTagsIndex->{ "normal curvature 1"->{ Cell[1880, 56, 230, 8, 50, "Section", Evaluatable->False, CellTags->"normal curvature 1"]} } *) (*CellTagsIndex CellTagsIndex->{ {"normal curvature 1", 51772, 1284} } *) (*NotebookFileOutline Notebook[{ Cell[1709, 49, 168, 5, 25, "Input"], Cell[1880, 56, 230, 8, 50, "Section", Evaluatable->False, CellTags->"normal curvature 1"], Cell[2113, 66, 542, 12, 110, "Text"], Cell[CellGroupData[{ Cell[2680, 82, 62, 1, 46, "Subsection"], Cell[2745, 85, 68, 1, 27, "Input"], Cell[2816, 88, 6113, 177, 235, "Input"], Cell[8932, 267, 8236, 224, 427, "Input"], Cell[17171, 493, 1170, 28, 139, "Input"], Cell[18344, 523, 635, 12, 219, "Input"], Cell[18982, 537, 233, 6, 27, "Input"], Cell[19218, 545, 382, 9, 75, "Input"], Cell[19603, 556, 895, 22, 123, "Input"], Cell[20501, 580, 291, 8, 43, "Input"], Cell[20795, 590, 893, 22, 123, "Input"], Cell[21691, 614, 1893, 36, 331, "Input"], Cell[23587, 652, 2261, 63, 75, "Input"], Cell[CellGroupData[{ Cell[25873, 719, 338, 10, 27, "Input"], Cell[26214, 731, 1809, 39, 762, "Input"] }, Closed]], Cell[28038, 773, 18894, 395, 747, "Input"] }, Closed]], Cell[CellGroupData[{ Cell[46969, 1173, 62, 1, 30, "Subsection"], Cell[47034, 1176, 3590, 75, 536, "Input"], Cell[50627, 1253, 309, 7, 59, "Input"] }, Closed]] } ] *) (*********************************************************************** End of Mathematica Notebook file. ***********************************************************************)