In[]:=
ClearAll[RotatedTorus]RotatedTorus[p_,r:{_,_},n_]:=GeometricTransformation[Torus[p,r],RotationTransform[{{0,0,1},n},p]]size={1-0.2,1+0.2}/2;Graphics3D[{Gray,RotatedTorus[{0,0,0},size,{1,-1,1}]},ImageSize->100,Lighting->"Neutral"]
Out[]=
In[]:=
ClearAll[r,r2,reginsideoutside]r[z_]:=3.5+3/(z+2)^2--1.95LogisticSigmoid[4(z-8.25)]r2[z_]:=1.75+3/(z+2)^2-reginsideoutside[x_,y_,z_,___]:=(y0.9)^2+((z-6.5)0.75)^2>1ParametricPlot3D[{r[z]Sin[θ],r2[z]Cos[θ],z},{θ,0,2Pi},{z,0,12},RegionFunction->reginsideoutside,AspectRatio->Automatic,PlotStyle->Directive[Gray,FlatShading[]],Lighting->"Neutral"]
1.55
(13-z)^4
1.75
(13-z)^4
Out[]=
In[]:=
nθ=35;nz=22;Δθ=0.0001;Δz=0.01;evenodd=1;size={1-0.2,1+0.2}0.4;data=Table[evenodd*=-1;Table[θoffset=-0.152Pi/nθ;θ=θr+evenoddθoffset;p={r[z]Sin[θ],r2[z]Cos[θ],z};p2={r[z]Sin[θ+Δθ],r2[z]Cos[θ+Δθ],z};p3={r[z+Δz]Sin[θ],r2[z+Δz]Cos[θ],z+Δz};left=Normalize[p2-p];up=Normalize[p3-p];normal=Normalize[Cross[up,left]];If[reginsideoutside@@p,RotatedTorus[p,size,RotationMatrix[evenodd30Degree,up].normal],{}],{θr,Subdivide[0.0,2Pi,nθ]//Most}],{z,Subdivide[0.0,9,nz]}];Graphics3D[{Gray,data},Lighting->"Neutral"]