Google Classroom
GeoGebraGeoGebra Classroom

Nex63 (6,3) - Rotegrity

Setup Scripting Create LM60 #========================================================== # 60 elements of Icosahedral symmetry: 60 Rotation matrices #========================================================== ζ = angle((1,0,0),(0,0,0),(1+sqrt(5),2,0)) SetConditionToShowObject(ζ,false) Mζ = {{cos(ζ),sin(ζ),0},{-sin(ζ),cos(ζ),0},{0,0,1}} Lα = {1,2,3}*72° LA3 = zip(Invert(Mζ)*{{1,0,0},{0,cos(α),-sin(α)},{0,sin(α),cos(α)}}*Mζ,α,Lα) 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)}) SetUp Bands #======================================================== # Rotegrity 3v{3,0} : 270 Bands # https://www.deviantart.com/taffgoch/art/Rotegrity-3v-0-3-625452129 # https://groups.google.com/g/geodesichelp/c/RFBZ6uFmsjU/m/QfiMqboLBAAJ # # 5 * 12 (vertices) = 60 Red bands # 5 * 12 (vertices) = 60 Green bands # 6 * 20 (triangles)= 120 Blue bands (60 Blue + 60 Cyan) # 1 * 30 (edges) = 30 Yellow bands #======================================================== ϕ = (1+sqrt(5))/2 Bi = (1,0,ϕ)/sqrt(ϕ+2) Ci = (ϕ,1,0)/sqrt(ϕ+2) C5Axis = Line(O,Ci) red = 0.132549689951321 green = 0.153966415801835 blue = 0.158785990386417 yellow = 0.156558417905753 #======================================================== # First create the RGBCY bandpoints # with center Red-pentagon on (0,0,1) #======================================================== #-------------------------------------------------------- # Red Band #-------------------------------------------------------- angZ= -asin(sqrt((1-cos(red)) / (1-cos(72°)))) vR1 = Vector(Rotate(Ci,angZ,zAxis)) vR2 = Rotate(vR1, -72°, C5Axis) AxisR = Line(O, Vector(vR1 ⊗ vR2)) LvR = Sequence(Rotate(vR1, k*red, AxisR), k,0,3) LpR = Zip(Point(O,v), v, LvR) #-------------------------------------------------------- # Green Band #-------------------------------------------------------- vG1 = Rotate(Vector(O,LpR(3)),-72°, C5Axis) vG3 = Vector(O,LpR(4)) AxisG = Line(O, Vector(vG1 ⊗ vG3)) LvG = Sequence(Rotate(vG1, k*green, AxisG), k,0,3) LpG = Zip(Point(O,v), v, LvG) #======================================================== # Spherical trigonometry : Cosine rules # https://en.wikipedia.org/wiki/Spherical_trigonometry #-------------------------------------------------------- # cos(A) = ( cos(a) - cos(b)*cos(c) ) / ( sin(b)*sin(c) ) #======================================================== hg = 2*green hb = 2*blue hB = acos( (cos(hb)-cos(hb)*cos(hg)) / (sin(hb)*sin(hg)) ) #-------------------------------------------------------- # Blue Band #-------------------------------------------------------- vB1 = Vector(O,LpG(2)) vB2 = Rotate(vG3,-hB, Line(O,LpG(2))) AxisB = Line(O, Vector(vB1 ⊗ vB2)) LvB = Sequence(Rotate(vB1, k*blue, AxisB), k,0,3) LpB = Zip(Point(O,v), v, LvB) #-------------------------------------------------------- # Cyan Band (Second blue) #-------------------------------------------------------- vC1 = Vector(O,LpB(3)) vC3 = Vector(O,LpG(4)) AxisC = Line(O, Vector(vC1 ⊗ vC3)) LvC = Sequence(Rotate(vC1, k*blue, AxisC), k,0,3) LpC = Zip(Point(O,v), v, LvC) #-------------------------------------------------------- # yellow Band #-------------------------------------------------------- vY1 = Rotate(Vector(O,LpB(2)),72°, C5Axis) vY2 = Vector(O,LpC(4)) AxisY = Line(O, Vector(vY1 ⊗ vY2)) LvY = Sequence(Rotate(vY1, k*yellow, AxisY), k,0,3) LpY = Zip(Point(O,v), v, LvY) #======================================================== # Rotate all Band points to Icosahedron orientation # conform Cubic system #======================================================== Ymid= Rotate(LpY(1), 1.5yellow, AxisY) angC = Angle(Plane(O,Ci,Bi),Plane(O,Ci,Ymid)) LR = Rotate(LpR, angC, C5Axis) LG = Rotate(LpG, angC, C5Axis) LB = Rotate(LpB, angC, C5Axis) LC = Rotate(LpC, angC, C5Axis) LY = Rotate(LpY, angC, C5Axis) #======================================================== # Create sphere #======================================================== Rarc = CircularArc(O, LR(1), LR(4), Plane(O, Ci, Bi)) Garc = CircularArc(O, LG(1), LG(4), Plane(O, Ci, Bi)) Barc = CircularArc(O, LB(1), LB(4), Plane(O, Ci, Bi)) Carc = CircularArc(O, LC(1), LC(4), Plane(O, Ci, Bi)) Yarc = CircularArc(O, LY(1), LY(4), Plane(O, Ci, Bi)) Rarc60 = Zip(ApplyMatrix(M,Rarc), M,LM60) Garc60 = Zip(ApplyMatrix(M,Garc), M,LM60) Barc60 = Zip(ApplyMatrix(M,Barc), M,LM60) Carc60 = Zip(ApplyMatrix(M,Carc), M,LM60) Yarc60 = Zip(ApplyMatrix(M,Yarc), M,LM60) #======================================================== # Properties #======================================================== #--- Color, and Label ---# Red = "Red" Green = "Green" Blue = "Blue" Cyan = "Cyan" Yellow= "Yellow" SetColor(Rarc60,"Red") SetColor(Garc60,"Green") SetColor(Barc60,"Blue") SetColor(Carc60,"Cyan") SetColor(Yarc60,"Yellow") #--- Visibility en Color ---# List={"Bi","Ci","C5Axis"} Execute(Zip("SetConditionToShowObject("+obj+",false)", obj,List)) List={"vR1","vR2","AxisR","LvR","LpR","LR","Rarc","angC"} Execute(Zip("SetConditionToShowObject("+obj+",false)", obj,List)) Execute(Zip("SetColor("+obj+","+Red+")", obj,List)) List={"vG1","vG3","AxisG","LvG","LpG","LG","Garc"} Execute(Zip("SetConditionToShowObject("+obj+",false)", obj,List)) Execute(Zip("SetColor("+obj+","+Green+")", obj,List)) List={"vB1","vB2","AxisB","LvB","LpB","LB","Barc"} Execute(Zip("SetConditionToShowObject("+obj+",false)", obj,List)) Execute(Zip("SetColor("+obj+","+Blue+")", obj,List)) List={"vC1","vC3","AxisC","LvC","LpC","LC","Carc"} Execute(Zip("SetConditionToShowObject("+obj+",false)", obj,List)) Execute(Zip("SetColor("+obj+","+Cyan+")", obj,List)) List={"vY1","vY2","AxisY","LvY","LpY","LY","Yarc","Ymid"} Execute(Zip("SetConditionToShowObject("+obj+",false)", obj,List)) Execute(Zip("SetColor("+obj+","+Yellow+")", obj,List)) List={"Red", "Green", "Blue", "Cyan", "Yellow", "List"} Execute(Zip("Delete("+obj+")", obj,List)) Setup Sphere #====================================== # SetUp Sphere: 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) ϕ = (1+sqrt(5))/2 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)) arc = CircularArc(O,Bi,Ai) icosi = Zip(ApplyMatrix(M, arc), M, LM60) #======================================================== # Settings #======================================================== SetActiveView(-1) SetBackgroundColor("#202020") ShowAxes(false) ShowGrid(false) CenterView(O) SetActiveView(1) ShowAxes(false) ShowGrid(false) CenterView(O) #======================================================== # Properties #======================================================== #--- Visibility ---# List={"O","Ai","Bi","Ci","Mi","arc"} Execute(Zip("SetConditionToShowObject("+obj+",false)", obj,List)) onIcosi= Checkbox("Icosaeder",{icosi}) List={cX,cY,cZ, M3Axis, A5Axis,B5Axis,C5Axis, a2Axis,b2Axis,c2Axis} onSymm = Checkbox("Symmetry",List) SetValue(onSymm,false) List={"O","Ci","cZ","C5Axis","icosi"} 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","icosi"} Execute(Zip("SetColor("+obj+","+Black+")", obj,List)) Execute(Zip("ShowLabel("+obj+",false)", obj,List)) Red="Red" List={"cX","Ai","A5Axis","a2Axis"} 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","icosi"} Execute(Zip("SetLineThickness("+obj+",2)", obj,List)) #--- PointSize ---# List={"O","Mi","Ai","Bi","Ci"} Execute(Zip("SetPointSize("+obj+",2)", obj,List)) List={"Black","Red","Green","Blue","List"} Execute(Zip("Delete("+obj+")", obj,List)) SetUp Struts #======================================================== # LsFree strut-points : list dimension (5,2) # LnFree nexor-points : list dimension (5,4,2) #-------------------------------------------------------- # Needed Axes: C5Axis M3Axis a2Axis # Bandpointlists: LR LG LB LC LY #======================================================== LRs = {LR(1),LR(4)} LGs = {LG(1),LG(4)} LBs = {LB(1),LB(4)} LCs = {LC(1),LC(4)} LYs = {LY(1),LY(4)} LRa = Rotate(LRs, 72°, C5Axis) LRb = Reverse(Rotate(LRs,-72°, C5Axis)) LRc = Rotate(LGs, 72°, C5Axis) LRd = LGs LGa = Reverse(Rotate(LRs,-72°, C5Axis)) LGb = Reverse(LBs) LGc = Reverse(LRs) LGd = LCs LBa = LGs LBb = Reverse(Rotate(LYs,-72°, C5Axis)) LBc = LCs LBd = Reverse(Rotate(LCs,120°, M3Axis)) LCa = Reverse(LBs) LCb = Rotate(LBs, -120°, M3Axis) LCc = Reverse(LGs) LCd = Reverse(LYs) LYa = Rotate(LBs, 72°, C5Axis) LYb = LCs LYc = Reverse(Rotate(LYb,180°, a2Axis)) LYd = Reverse(Rotate(LYa,180°, a2Axis)) LRn = {LRa, LRb, LRc, LRd} LGn = {LGa, LGb, LGc, LGd} LBn = {LBa, LBb, LBc, LBd} LCn = {LCa, LCb, LCc, LCd} LYn = {LYa, LYb, LYc, LYd} LsFree = CopyFreeObject({LRs,LGs,LBs,LCs,LYs}) LnFree = CopyFreeObject({LRn,LGn,LBn,LCn,LYn}) List={"LRs", "LGs", "LBs", "LCs","LYs", "List"} Execute(Zip("Delete("+obj+")", obj,List))