In[]:=
Module{Δθ,Δr,δr,δθ,quadraticForm,q,vertices​​,numberOfSpokes​​,numberOfRings​​,indexList​​,vertexNormals,xx,yy​​,curveGraph​​,rHatL​​,u1L={1,0}​​,u2L={0,1}}​​,rHatL[ζ_]:={Cos[ζ],Sin[ζ]};​​quadraticForm[a_,b_,c_][x_,y_]:=a
2
x
+2bxy+c
2
y
;​​Δθ=2π;δθ=
Δθ
72
;Δr=1.5;δr=
Δr
18
;​​q[x_,y_]:=quadraticForm[1,0,-1][x,y];​​q[_]:=q@@;​​​​curveGraph[_,f_]:=Append[,f[]];​​​​vertices=Table[Append[r{Cos[θ],Sin[θ]},q[rCos[θ],rSin[θ]]],{r,0,Δr,δr},{θ,0,Δθ,δθ}];​​vertexNormals=Table[​​{1,0,D[q[xx,yy],xx]}{0,1,D[q[xx,yy],yy]}/.{xx->rCos[θ],yy->rSin[θ]}​​,{r,0,Δr,δr},{θ,0,Δθ,δθ}];​​numberOfSpokes=Dimensions[vertices]2;​​numberOfRings=Dimensions[vertices]1;​​indexList=Table[{i​​,If[Mod[i,numberOfSpokes]0,i-numberOfSpokes+1,i+1]​​,If[Mod[i,numberOfSpokes]0,i-numberOfSpokes+1,i+1]+numberOfSpokes​​,i+numberOfSpokes}​​,{i,1,(numberOfRings-1)numberOfSpokes}];​​​​Graphics3DEdgeForm[]​​,{Opacity[.8],GraphicsComplex[Flatten[vertices,1],Polygon[indexList]]}​​,Line[curveGraph[rHatL[#],q]&/@Range[0,2π,δθ]]​​,{Opacity[.2],LightGray,Polygon[{Cos[#],Sin[#],0}&/@Range[0,2π,δθ]]}​​,Line[{Cos[#],Sin[#],0}&/@Range[0,2π,δθ]]​​,Red​​,Arrow[Tube[1.3Δr{{-1,0,0},{1,0,0}}]]​​,,LinecurveGraph[u1L#,q]&/@Range-Δr,Δr,
Δr
20
​​,Green​​,Arrow[Tube[1.3Δr{{0,-1,0},{0,1,0}}]]​​,LinecurveGraph[u2L#,q]&/@Range-Δr,Δr,
Δr
20
​​,{Blue,Arrow[Tube[1.3Δr{{0,0,-1},{0,0,1}}]]}​​,BoxedFalse
Out[]=