Spring washerSándor KabaiWaving washer is compressed by a nut ensures that no loosening can occur because of the increased friction caused by the spring action of the washer.
In[]:=
Manipulate[(*springwasher*)t=0.2;wave1={Specularity[0.6],RGBColor[1,0.1,0.4],ParametricPlot3D[{(1-m)rSin[x],(1-m)rCos[x],mSin[nx]+m+t},{x,0,2Pi},{r,1.3,2.4},MeshNone,BoundaryStyleBlack][[1]]};wave2=ParametricPlot3D[{(1-m)rSin[x],(1-m)rCos[x],mSin[nx]+m},{x,0,2Pi},{r,1.3,2.4},MeshNone,BoundaryStyleBlack][[1]];wave3=ParametricPlot3D[{(1-m)2.4Sin[x],(1-m)2.4Cos[x],mSin[nx]+h+m},{x,0,2Pi},{h,0,t},MeshNone][[1]];nut=Rotate[Translate[head,{0,0,1.8+2m-turn+0.3}],8m-8turn,{0,0,1}];Graphics3D[{nut,head,screw,plate1,plate2,wave1,wave2,wave3},BoxedFalse,SphericalRegionTrue,ImageSize360,ViewPoint{1,-4,1}],{{n,3,"number of waves"},2,5,1,RadioButton},{{turn,0,"turn nut"},0,0.3},{{m,0.2,"move washer"},0.2,0.04},TrackedSymbolsTrue,Initialization((*screw*)length=38;core=0.85;β=0.8;pitch=(1-core)Tan[β]/(Pi);t1=ParametricPlot3D[{-rSin[x],rCos[x],rTan[β]+pitchx-Tan[β]},{x,0,length},{r,core,1},PlotPoints30,MeshNone,BoundaryStyleBlack][[1]];t2=ParametricPlot3D[{-rSin[x],rCos[x],-rTan[β]+pitchx+Tan[β]},{x,0,length},{r,core,1},PlotPoints30,MeshNone,BoundaryStyleBlack][[1]];bolt=Cylinder[{{0,0,0},{0,0,pitchlength+2Pipitch/2}},core0.96];screw={Yellow,{t1,t2,bolt}};(*head*)nw=6;v1=Table[{2Sin[i2Pi/nw],2Cos[i2Pi/nw],-0.6},{i,nw+1}];v2=Table[{2Sin[i2Pi/nw],2Cos[i2Pi/nw],-1.6},{i,nw+1}];hex1=Polygon[v1];hex2=Polygon[v2];f[{a_,b_,c_,d_}]:={a,b,d,c};hex3={Specularity[0.6],RGBColor[0.3,0.6,0.7],Polygon[f/@Partition[Flatten[Transpose[{v1,v2}],1],4,2]]};head={hex1,hex2,hex3};plate1={RGBColor[0.5,0.6,0.8],Cuboid[{-2.5,-2.7,-0.3},{2.5,2.7,0}]};plate2={RGBColor[0.5,1,0.8],Cuboid[{-2.5,-2.7,-0.6},{2.5,2.7,-0.3}]};)]
Out[]=
n=3;m=0.3;wave1=ParametricPlot3D[{(1-m)rSin[x],(1-m)rCos[x],mSin[nx]},{x,0,2Pi},{r,1,1.4},MeshNone,BoundaryStyleBlack][[1]];Graphics3D[{wave1},BoxedFalse,SphericalRegionTrue,ImageSize360]
Out[]=

