A ring is formed from 20 icosahedra with face to face connection (ico20). Then such rings are arranged so that at their intersection point the icosahedra coincide. Ico20 consists of five units. The unit contains four icosahedra, each in different orientation (marked with different colors). The centres of icosahedra are on a wavy decagon, either at the vertices or at middle of sides.
In[]:=
sp=Sphere[];fi=GoldenRatio;alf=ArcTan[fi];alf1=ArcTan[fi^2];bet=ArcTan[1/fi];bet1=ArcTan[1/fi^2];eps=bet-bet1;(*m=distanceoftwoparallelfaces*)m=N[Sqrt[(2fi+1)^2+fi^2]/3];s=mCos[eps];d=s/Tan[2Pi/20];r=Sqrt[d^2+s^2];h=2mSin[eps];k=rSin[3Pi/10];l=rCos[3Pi/10];
In[]:=
ico=PolyhedronData["Icosahedron","Faces"];icon={Green,Rotate[ico,Pi/2,{0,0,1}]};icofl=Rotate[Rotate[ico,Pi/2,{0,0,1}],-Pi/2+bet+bet1,{1,0,0}];icoup=Translate[Rotate[icofl,Pi,{0,0,1}],{0,0,m}];icoup1=Translate[icofl,{0,0,2m}];Graphics3D[{icofl,icoup,icoup1},ImageSize300,ViewPoint{0,100,0},ViewAngle->0.01,BoxedFalse,SphericalRegionTrue]
Out[]=
icon = central ico, s1,s2,s3 = connecting ico corresonding to s5 geometry
In[]:=
s1={Yellow,Rotate[Rotate[Translate[Rotate[icoup,Pi,{0,0,1}],{0,0,0}],-alf1-bet,{1,0,0}],2Pi/5,{0,0,1}]};s2={Cyan,Rotate[Rotate[Translate[Rotate[icoup1,Pi,{0,0,1}],{0,0,0}],-alf1-bet,{1,0,0}],2Pi/5,{0,0,1}]};s3=Rotate[Rotate[Translate[Rotate[icoup,Pi,{0,0,1}],{0,0,0}],-alf1-bet,{1,0,0}],-2Pi/5,{0,0,1}];s5=Table[Rotate[{s3},i2Pi/5,{0,0,1}],{i,5}];Graphics3D[{s5,s2,icon},ImageSize300,ViewPoint{0,0,10},BoxedFalse,SphericalRegionTrue]
Out[]=
This is the unit (icon, s1, s2, s3) which is repeated fives times around an r circle
In[]:=
Graphics3D[{icon,s1,s2,s3},ImageSize300,ViewPoint{0,0,10},BoxedFalse,SphericalRegionTrue]
Out[]=
In[]:=
r1=Table[Rotate[Translate[{icon,s1,s2,s3},{0,-r,0}],i2Pi/5,{0,0,1}],{i,5}];Graphics3D[{sp,r1},ImageSize300,ViewPoint{0,0,10},BoxedFalse,SphericalRegionTrue]
Out[]=
In[]:=
r1=Table[Rotate[Translate[{icon,s1,s2,s3},{0,-r,0}],i2Pi/5,{0,0,1}],{i,5}];r1h=Translate[r1,{2l,2k,0}];r2=Translate[r1,{2d,0,0}];Graphics3D[{r1,r2},ImageSize300,ViewPoint{0,0,10},BoxedFalse,SphericalRegionTrue]
Out[]=
In[]:=
r1a=Table[Rotate[Translate[{s5,icon,s1,s2,s3},{0,-r,0}],i2Pi/5+Pi/5,{0,0,1}],{i,5}];Graphics3D[{sp,r1a},ImageSize300,ViewPoint{0,0,10},BoxedFalse,SphericalRegionTrue]
Out[]=
Bring icon to the centre, and rotate ring five times
In[]:=
rc=Translate[r1,{0,r,0}];rc5=Table[Rotate[rc,i2Pi/5,{0,0,1}],{i,5}];Graphics3D[{rc5},ImageSize400,ViewPoint{0,0,10},BoxedFalse,SphericalRegionTrue]