Google Classroom
GeoGebraGeoGebra Classroom

Icosahedral symmetry

The icosahedral rotation group is of order 60.

This worksheet is a part of Nexorade: work doc Move the Red point. Setup ϕ = (1+sqrt(5))/2 # 60 elements of Icosahedral symmetry: 60 Rotation matrices #========================================================== Mrz = {{1,(ϕ-1),0}*sqrt((ϕ+1)/(ϕ+2)),{-(ϕ-1),1,0}*sqrt((ϕ+1)/(ϕ+2)),{0,0,1}} LA3 = zip(Invert(Mrz)*{{1,0,0},{0,cos(α),-sin(α)},{0,sin(α),cos(α)}}*Mrz, α,{1,2,3}*72°) LM3 = {{{1,0,0},{0,1,0},{0,0,1}},{{0,0,1},{1,0,0},{0,1,0}},{{0,1,0},{0,0,1},{1,0,0}}} LM30= Join({LM3, Join(Zip(Join(Zip(LM3*A3, A3,LA3))*M3, M3,LM3))}) MrO = {{-1,0,0},{0,-1,0},{0,0,-1}}*Invert(LA3(1))*{{1,0,0},{0,-1,0},{0,0,1}}*LA3(1) LM60= Join({LM30,Reverse(LM30 MrO)}) # Draw spherical icosaeder #======================================== arc = CircularArc((0,0,0), (1,0,ϕ)/sqrt(ϕ+2), (0,ϕ,1)/sqrt(ϕ+2) ) tri = Zip(ApplyMatrix(M, arc), M, LM3) icosi = Zip(ApplyMatrix(M, arc), M, LM60) O = (0, 0, 0) sph = Sphere(O,1) cX = Circle(O,1,xAxis) cY = Circle(O,1,yAxis) cZ = Circle(O,1,zAxis) Mi = (1,1,1)/sqrt(3) M3Axis= Line(O,Mi) Ai = (0,ϕ,1)/sqrt(ϕ+2) Bi = (1,0,ϕ)/sqrt(ϕ+2) Ci = (ϕ,1,0)/sqrt(ϕ+2) A5Axis = Line(O,Ai) B5Axis = Line(O,Bi) C5Axis = Line(O,Ci) a2Axis = Line(O,Midpoint(Bi,Ci)) b2Axis = Line(O,Midpoint(Ci,Ai)) c2Axis = Line(O,Midpoint(Ai,Bi)) # Draw test point #======================================== P = PointIn(Sphere(O,1)) P60 = Zip(ApplyMatrix(M, P), M, LM60) #======================================================== # Settings #======================================================== SetActiveView(-1) SetBackgroundColor("#F0F0F0") ShowAxes(false) ShowGrid(false) CenterView(O) SetActiveView(1) ShowAxes(false) ShowGrid(false) CenterView(O) #======================================================== # Properties #======================================================== #--- Visibility ---# List={cX,cY,cZ,tri,M3Axis,A5Axis,B5Axis,C5Axis,a2Axis,b2Axis,c2Axis} onSymm = CheckBox("Symmetry",List) SetValue(onSymm,false) List={"Mi","Ai","Bi","Ci","arc"} Execute(Zip("SetConditionToShowObject("+obj+",onSymm)", obj,List)) onIcosi= CheckBox("Icosi",{icosi}) List={"O","Ci","cZ","C5Axis","icosi","P","P60"} Execute(Zip("SetVisibleInView("+obj+",1,false)", obj,List)) #--- Color, Filling and Label ---# SetColor(sph,"White") SetFilling(sph,1) Black="Black" List={"O","Mi","M3Axis","arc","tri","icosi","P60"} Execute(Zip("SetColor("+obj+","+Black+")", obj,List)) Execute(Zip("ShowLabel("+obj+",false)", obj,List)) Red="Red" List={"cX","Ai","A5Axis","a2Axis","P"} Execute(Zip("SetColor("+obj+","+Red+")", obj,List)) Execute(Zip("ShowLabel("+obj+",false)", obj,List)) Green="Green" List={"cY","Bi","B5Axis","b2Axis"} Execute(Zip("SetColor("+obj+","+Green+")", obj,List)) Execute(Zip("ShowLabel("+obj+",false)", obj,List)) Blue="Blue" List={"cZ","Ci","C5Axis","c2Axis"} Execute(Zip("SetColor("+obj+","+Blue+")", obj,List)) Execute(Zip("ShowLabel("+obj+",false)", obj,List)) #--- LineThickness ---# List={"cX","cY","cZ","M3Axis","a2Axis","b2Axis","c2Axis","A5Axis","B5Axis","C5Axis"} Execute(Zip("SetLineThickness("+obj+",3)", obj,List)) List={"arc","tri","icosi"} Execute(Zip("SetLineThickness("+obj+",2)", obj,List)) #--- PointSize ---# List={"O","Mi","Ai","Bi","Ci","P60"} Execute(Zip("SetPointSize("+obj+",2)", obj,List)) List={"Black","Red","Green","Blue","List"} Execute(Zip("Delete("+obj+")", obj,List))