Basic helicone

Manipulate[Module[{f,pw,cylinders,colors,adjustedColors,centerCylinders,base,spokes,coreSphere,viewpoint,alpha,beta},(*Function to define the shape of the cylinders based on the index t*)f[t_]:=(32-t) t/256+0.4;
(*Piecewise function to determine the position offset*)pw[i_]:=Piecewise[{{0,x<0},{x,i>=x>=0},{i,35>=x>i},{i-x,36+i>x>=35},{0,x>36+i}}];
(*Generate a dynamic color palette*)colors=Table[ColorData["Rainbow"][i/numColors],{i,1,numColors}];
(*Adjust color intensity dynamically*)adjustedColors=Table[Blend[{colors[[i]],White},colorIntensity],{i,Length[colors]}];
(*Compute the twist factor from the angle*)beta=(Pi twistAngle/180)+0.098174;
(*Compute alpha from the input angle*)alpha=Pi alphaAngle/180;
(*Create the cylinders in the spiral structure*)cylinders=Table[{adjustedColors[[Mod[i,Length[adjustedColors],1]]],Cylinder[{{f[i] Cos[alpha i+beta (pw[i]/. {x->range})],f[i] Sin[alpha i+beta (pw[i]/. {x->range})],spacing i},{f[i] Cos[alpha i+beta (pw[i]/. {x->range})],f[i] Sin[alpha i+beta (pw[i]/. {x->range})],spacing i+cylheight}},radius]}~Join~If[showSecondCylinders,{Cylinder[{{-f[i] Cos[alpha i+beta (pw[i]/. {x->range})],-f[i] Sin[alpha i+beta (pw[i]/. {x->range})],spacing i},{-f[i] Cos[alpha i+beta (pw[i]/. {x->range})],-f[i] Sin[alpha i+beta (pw[i]/. {x->range})],spacing i+cylheight}},radius]},{}],{i,1,numLayers}];
(*Create the center cylinders*)centerCylinders=Table[Cylinder[{{0,0,spacing i+cylheight/2},{0,0,spacing (i+1)-cylheight/2}},cylheight/cc],{i,1,numLayers}];
(*Define the base of the structure*)base={Gray,Cylinder[{{0,0,spacing*-1},{0,0,spacing*(numLayers+1)}},0.1]};
(*Create the spokes of the structure if enabled*)spokes=If[showSpokes,Table[{adjustedColors[[Mod[i,Length[adjustedColors],1]]],Style[Cylinder[{{f[i] Cos[alpha i+beta (pw[i]/. {x->range})],f[i] Sin[alpha i+beta (pw[i]/. {x->range})],spacing i+cylheight/2},{-f[i] Cos[alpha i+beta (pw[i]/. {x->range})],-f[i] Sin[alpha i+beta (pw[i]/. {x->range})],spacing i+cylheight/2}},cylheight/cc],EdgeForm[]]},{i,1,numLayers}],{}];
(*Create the core ellipsoid if enabled and color it gray*)
coreSphere=If[showCore,{Gray,Ellipsoid[{0,0,16 spacing},{1.2,1.2,1.2*1.5}]},{}];
(*Determine the viewpoint based on the selection*)viewpoint=Switch[viewOption,"Current View",{20,20 Cos[1.5 Pi/2],20 Sin[1.5 Pi/2]},"Top View",{0,0,50},"Side View",{0,50,0}];
(*Create the 3D graphics with all components*)
Graphics3D[Join[cylinders,centerCylinders,{base},spokes,{coreSphere}],Boxed->False,ViewPoint->viewpoint,PlotRange->{{-1.76,1.76},{-1.76,1.76},{0,4}},ImageSize->750,Lighting->"Neutral",Axes->False]],

(*Add the interactive controls*)
Item[Style["Growth Controls",Bold,16,Black],Alignment->Left],
{{alphaAngle,-5.62,Style["Divergence angle 1",FontSize->14]},-10,0,.1},
{{range,32.59,Style["Lolipopter movement",FontSize->14]},0,68,0.0005},
{{twistAngle,68.75388202501892,Style["Divergence angle 2",FontSize->14]},0,360,Appearance->{"Open"}},

Delimiter,
Item[Style["Action controls",Bold,16,Black],Alignment->Left],
{{numLayers,31,Style["Number of layers",FontSize->14]},1,31,1,Appearance->{"Labeled"}},
{{numColors,5,Style["Number of colors",FontSize->14]},{1,2,3,4,5,6,7,8,9,10,11,12,13},SetterBar},
{{viewOption,"Current View",Style["Viewpoint",FontSize->14]},{"Current View","Top View","Side View"}},

Delimiter,
Item[Style["On off",Bold,16,Black],Alignment->Left],
{{showCore,False,Style["Core",FontSize->14]},{True,False}},
{{showSpokes,True,Style["Spokes",FontSize->14]},{True,False}},
{{showSecondCylinders,True,Style["Second leaf",FontSize->14]},{True,False}},

Delimiter,
Item[Style["Dimension Controls",Bold,16,Black],Alignment->Left],
{{radius,0.365,Style["Cylinder radius",FontSize->14]},0.1,0.5},
{{cylheight,0.064,Style["Cylinder height",FontSize->14]},0.05,1},
{{spacing,0.116,Style["Layer spacing",FontSize->14]},0.05,1},
{{cc,2,Style["Spokes radius",FontSize->14]},1,20,1},
{{colorIntensity,0,Style["Color Intensity",FontSize->14]},0,1}]

Making the Moravian

(*Get vertices and face data*)vertices=PolyhedronData["SmallRhombicuboctahedron","Vertices"];
faces=PolyhedronData["SmallRhombicuboctahedron","FaceIndices"];

(*Separate square and triangular faces*)
squareFaces=Select[faces,Length[#]==4&];
triangleFaces=Select[faces,Length[#]==3&];

(*Define a function to compute the midpoint of a face*)
faceMidpoint[face_]:=Mean[vertices[[face]]];

(*Scaling function to shrink triangles by a factor of 1/8*)
shrinkToOrigin[point_]:=(1/6) point;

(*Translation function to shift by+9 in the z-axis*)
translateZ[point_]:=point+{0,0,8.9};

(*Create shrunk and translated triangular spikes for square faces*)
squareTriangles=Flatten[Table[Module[{midpoint,displacedMidpoint,edges},midpoint=faceMidpoint[face];(*Compute the midpoint of the face*)displacedMidpoint=translateZ[shrinkToOrigin[5 midpoint]];(*Shrink and translate displaced midpoint*)edges=Partition[Append[face,First[face]],2,1];(*Pair up vertices to form edges*)Table[Polygon[{translateZ[shrinkToOrigin[vertices[[edge[[1]]]]]],translateZ[shrinkToOrigin[vertices[[edge[[2]]]]]],displacedMidpoint}],(*Shrink and translate entire triangle*){edge,edges}]],{face,squareFaces}],1];

(*Create shrunk and translated triangular spikes for triangular faces*)
triangleTriangles=Flatten[Table[Module[{midpoint,displacedMidpoint,edges},midpoint=faceMidpoint[face];(*Compute the midpoint of the face*)displacedMidpoint=translateZ[shrinkToOrigin[4 midpoint]];(*Shrink and translate displaced midpoint*)edges=Partition[Append[face,First[face]],2,1];(*Pair up vertices to form edges*)Table[Polygon[{translateZ[shrinkToOrigin[vertices[[edge[[1]]]]]],translateZ[shrinkToOrigin[vertices[[edge[[2]]]]]],displacedMidpoint}],(*Shrink and translate entire triangle*){edge,edges}]],{face,triangleFaces}],1];

(*Combine the original polyhedron and the shrunk,translated spikes*)
moravian=Graphics3D[{Red,(*Solid red color for the entire star*)squareTriangles,(*Add shrunk and translated spikes for square faces*)triangleTriangles (*Add shrunk and translated spikes for triangular faces*)},Boxed->False,SphericalRegion->True];

(*Display the result*)
moravian;

Christmas tree with bauble sizes adjusted

Manipulate[Module[{f,pw,spheres,colors,adjustedColors,base,spokes,newSpokes,coreCone,dodecahedron,viewpoint,alpha,beta},(*Function to define the shape of the spheres based on the index t*)f[t_]:=(numLayers-t+28) scaleFactor;
(*Piecewise function to determine the position offset*)pw[i_]:=Piecewise[{{0,x<0},{x,(i/2)>=x>=0},{(i/2),35>=x>(i/2)},{(i/2)-(x-(i/2)),36+(i/2)>x>=35},{0,x>36+(i/2)}}];
(*Generate a dynamic color palette*)colors=Table[ColorData["Rainbow"][i/numColors],{i,1,numColors}];
(*Adjust color intensity dynamically*)adjustedColors=Table[Blend[{colors[[i]],White},colorIntensity],{i,Length[colors]}];
(*Compute the twist factor from the angle*)beta=(Pi twistAngle/90)+0.098174;
(*Compute alpha from the input angle*)alpha=Pi alphaAngle/180;
(*Create the spheres in the spiral structure with reversed dynamic radius*)spheres=Table[{adjustedColors[[Mod[i,Length[adjustedColors],1]]],(*Reverse direction of radius growth:large at top,small at bottom*)radiusLayer=2 radius-(2 radius-radius) (i-1)/(numLayers-1);
(*First group of spheres:one sphere per layer*)If[showFirstGroup,Sphere[{f[i] Cos[alpha i+beta (pw[i]/. {x->range})],f[i] Sin[alpha i+beta (pw[i]/. {x->range})],spacing i},radiusLayer],Nothing],(*Second group of spheres:consistently the other sphere per layer*)If[showSecondGroup,Sphere[{-f[i] Cos[alpha i+beta (pw[i]/. {x->range})],-f[i] Sin[alpha i+beta (pw[i]/. {x->range})],spacing i},radiusLayer],Nothing]},{i,1,numLayers}];
(*Define the base of the structure*)base={Gray,Cylinder[{{0,0,spacing*-1},{0,0,spacing*(numLayers+1)}},0.1]};
(*Create the original spokes*)spokes=If[showSpokes,Table[{adjustedColors[[Mod[i,Length[adjustedColors],1]]],Cylinder[{{f[i] Cos[alpha i+beta (pw[i]/. {x->range})],f[i] Sin[alpha i+beta (pw[i]/. {x->range})],spacing i},{-f[i] Cos[alpha i+beta (pw[i]/. {x->range})],-f[i] Sin[alpha i+beta (pw[i]/. {x->range})],spacing i}},cylheight/cc]},{i,1,numLayers}],{}];
(*Create the new spokes,ensuring they connect the z-axis to the first group of spheres*)newSpokes=If[showNewSpokes,Table[{adjustedColors[[Mod[i,Length[adjustedColors],1]]],Cylinder[{{0,0,spacing i},{f[i] Cos[alpha i+beta (pw[i]/. {x->range})],f[i] Sin[alpha i+beta (pw[i]/. {x->range})],spacing i}},cylheight/cc]},{i,1,numLayers}],{}];
(*Create the core cone if enabled and color it gray*)coreCone=If[showCore,{RGBColor[0,0.5,0],Cone[{{0,0,0},{0,0,spacing*(numLayers+5)}},spacing*numLayers*scaleFactor*10]},{}];
(*Define decorations with the Moravian star*)dodecahedron=Which[decoration=="Small Stellated Dodecahedron",{Red,GeometricTransformation[PolyhedronData["SmallStellatedDodecahedron","Faces"],Composition[ScalingTransform[{1.4,1.4,1.4}],TranslationTransform[{0,0,6.2}]]]},decoration=="Great Stellated Dodecahedron",{Red,GeometricTransformation[PolyhedronData["GreatStellatedDodecahedron","Faces"],Composition[ScalingTransform[{1.5,1.5,1.5}],TranslationTransform[{0,0,5.8}],RotationTransform[-Pi/2,{0,0,1}],RotationTransform[0.658584,{0,1,0}]]]},decoration=="Spikey",{Red,GeometricTransformation[PolyhedronData["RhombicHexecontahedron","Faces"],Composition[ScalingTransform[{.33,.33,.33}],TranslationTransform[{0,0,26.6}]]]},decoration=="Moravian",{Red,squareTriangles,triangleTriangles},decoration=="None",Nothing];
(*Determine the viewpoint based on the selection*)viewpoint=Switch[viewOption,"Current View",{20,20 Cos[1.5 Pi/2],20 Sin[1.5 Pi/2]},"Top View",{0,0,50},"Side View",{0,50,0}];
(*Create the 3D graphics with the components*)Graphics3D[Join[spheres,{base},spokes,newSpokes,{coreCone},{dodecahedron}],Boxed->False,ViewPoint->viewpoint,PlotRange->{{-2.2,2.2},{-2.2,2.2},{-.3,9.8}},ImageSize->750,Lighting->"Neutral",Axes->False]],

(*Add the interactive controls*)Item[Style["Growth Controls",Bold,16,Black],Alignment->Left],
{{alphaAngle,-5,Style["Divergence angle 1",FontSize->14]},-5,0},
{{range,32.59,Style["Lolipopter action",FontSize->14]},0,136,0.005},
{{twistAngle,70.7,Style["Divergence angle 2",FontSize->14]},0,360,.5},Delimiter,Item[Style["Action controls",Bold,16,Black],Alignment->Left],

{{numLayers,64,Style["Number of layers",FontSize->14]},1,64,1},{{numColors,5,Style["Number of colors",FontSize->14]},{1,2,3,4,5,6,7,8,9,10,11,12,13},SetterBar},{{viewOption,"Current View",Style["Viewpoint",FontSize->14]},{"Current View","Top View","Side View"}},Delimiter,Item[Style["On off",Bold,16,Black],Alignment->Left],

{{showCore,True,Style["Core",FontSize->14]},{True,False}},
{{showSpokes,True,Style["Spokes",FontSize->14]},{True,False}},
{{showFirstGroup,True,Style["Show first spheres",FontSize->14]},{True,False}},
{{showSecondGroup,True,Style["Show second spheres",FontSize->14]},{True,False}},
{{showNewSpokes,False,Style["Show new spokes",FontSize->14]},{True,False}},Delimiter,Item[Style["Dimension Controls",Bold,16,Black],Alignment->Left],

{{radius,0.227,Style["Sphere radius",FontSize->14]},0.1,0.8},
{{cylheight,0.014,Style["Cylinder radius",FontSize->14]},0,1},
{{spacing,0.116,Style["Layer spacing",FontSize->14]},0.05,1},
{{cc,0.3,Style["Spokes radius",FontSize->14]},0.3,20,1},
{{scaleFactor,0.019,Style["Cone scaling",FontSize->14]},0.01,0.1,0.001},
{{colorIntensity,0,Style["Color Intensity",FontSize->14]},0,1},Delimiter,Item[Style["Decoration",Bold,16,Black],Alignment->Left],{{decoration,"None",Style["",FontSize->14]},{"None"->Style["None",FontSize->14],"Small Stellated Dodecahedron"->Style["Small Stellated Dodecahedron",FontSize->14],"Great Stellated Dodecahedron"->Style["Great Stellated Dodecahedron",FontSize->14],"Spikey"->Style["Spikey",FontSize->14],"Moravian"->Style["Moravian/Herrnhuter",FontSize->14]},ControlType->SetterBar,Appearance->"Vertical"}]

Microscope

Manipulate[(*Generate florets (seeds)*)florets=Graphics[{EdgeForm[If[floretColorScheme==="Red",{Thick,RGBColor[.6,.43,.82]},(*Default purple outline*)If[floretColorScheme==="White",{Thick,White},If[floretColorScheme==="Green",{Thick,Green},If[floretColorScheme==="Gray",{Thick,Gray},{Thick,Black}]]]]],FaceForm[Which[floretColorScheme==="Red",RGBColor[1,0,0],(*Red florets*)floretColorScheme==="White",White,(*White florets*)floretColorScheme==="Green",Green,(*Green florets*)floretColorScheme==="Gray",Gray,(*Gray florets*)floretColorScheme==="Black",Black (*Black florets*)]],Table[{Disk[r {Cos[(n-r) k 2 π],Sin[(n-r) k 2 π]},s]},{r,n}]}];
(*Generate additional florets (seeds) for florets1*)florets1=If[showFlorets1,Graphics[{EdgeForm[If[floretColorScheme==="Red",{Thick,RGBColor[.6,.43,.82]},(*Default purple outline*)If[floretColorScheme==="White",{Thick,White},If[floretColorScheme==="Green",{Thick,Green},If[floretColorScheme==="Gray",{Thick,Gray},{Thick,Black}]]]]],FaceForm[Which[floretColorScheme==="Red",RGBColor[1,0,0],(*Red florets*)floretColorScheme==="White",White,(*White florets*)floretColorScheme==="Green",Green,(*Green florets*)floretColorScheme==="Gray",Gray,(*Gray florets*)floretColorScheme==="Black",Black (*Black florets*)]],Table[{Disk[r {Cos[(n-r) k 2 π],Sin[(n-r) k 2 π]},s]},{r,n}]}],{}];
(*Create a transparent circle around the seeds as a boundary*)
circ=Graphics[{Transparent,Circle[{0,0},m]}];
(*Draw the central circle representing the center of the seed pattern*)
center=Graphics[Circle[{0,0},2]];
(*Generate the main polygonal spiral*)mainPolygonalSpiral=If[showPolygonalSpiral,Graphics[{If[colorSpirals,ColorData["Rainbow"][0],Black],Thickness[spiralThickness],Line[Table[{sp*r*Cos[(n-sp*r) k 2 π],sp*r*Sin[(n-sp*r) k 2 π]},{r,1,n/sp}]]}],{}];
(*Generate offset polygonal spirals*)offsetPolygonalSpirals=If[showOffsetPolygonalSpirals,Graphics[Table[{If[colorSpirals,ColorData["Rainbow"][step/sp],Black],Thickness[spiralThickness],Line[Table[{(sp*r+step)*Cos[(n-(sp*r+step))*k*2*Pi],(sp*r+step)*Sin[(n-(sp*r+step))*k*2*Pi]},{r,0,n/sp-1}]]},{step,1,sp-1}]],{}];
(*Generate the main spiral floret replacements*)mainSpiralFlorets=If[showFloretSpiral,Graphics[{If[colorSpirals,ColorData["Rainbow"][0],Black],Table[Disk[{sp*r*Cos[(n-sp*r) k 2 π],sp*r*Sin[(n-sp*r) k 2 π]},s],{r,1,n/sp}]}],{}];
(*Generate offset floret spirals*)offsetSpiralFlorets=If[showFloretSpiral,Graphics[Table[{If[colorSpirals,ColorData["Rainbow"][step/sp],Black],Table[Disk[{(sp*r+step)*Cos[(n-(sp*r+step))*k*2*Pi],(sp*r+step)*Sin[(n-(sp*r+step))*k*2*Pi]},s],{r,0,n/sp-1}]},{step,1,sp-1}]],{}];
(*Add labels to the florets with toggleable font color and visibility*)labels=If[showFont,Graphics[Table[Text[Style[(n-r),Bold,t,FontColor->If[fontColor==="White",White,Black]],r {Cos[(n-r) k 2 π],Sin[(n-r) k 2 π]}],{r,n}]],{}];

(*Combine all components into a single graphic*)
Show[florets,mainPolygonalSpiral,offsetPolygonalSpirals,mainSpiralFlorets,offsetSpiralFlorets,florets1,labels,circ,ImageSize->{700,700}],

(*Add interactive controls*)
Item[Style["Growth controls",Bold,16,Black],Alignment->Left],
{{n,30,Style["Number of leaves",FontSize->14]},1,5000,1,Appearance->{"Labeled","Open"}},{{sp,5,Style["Number of spirals",FontSize->14]},1,200,1,Appearance->{"Labeled","Open"}},{{k,.618,Style["Angle of divergence",FontSize->14]},0.001,1,0.001,Appearance->{"Labeled","Open"}},

Delimiter,
Item[Style["Dimension controls",Bold,16,Black],Alignment->Left],
{{s,2,Style["Leaf size",FontSize->14]},0,50,1,Appearance->{"Labeled"}},{{spiralThickness,0.009,Style["Spiral thickness",FontSize->14]},0.001,0.02,0.001,Appearance->{"Labeled"}},{{m,42,Style["Bounding box",FontSize->14]},1,1003,1,Appearance->{"Labeled"}},

Delimiter,
Item[Style["Font controls",Bold,16,Black],Alignment->Left],{{showFont,False,Style["Show font",FontSize->14]},{True,False}},
{{t,21,Style["Font size",FontSize->14]},1,50,1,Appearance->{"Labeled"}},{{fontColor,"White",Style["Font color",FontSize->14]},{"Black","White"},ControlType->PopupMenu},

Delimiter,
Item[Style["Spiral highlighting",Bold,16,Black],Alignment->Left],
{{showPolygonalSpiral,True,Style["Show main spiral",FontSize->14]},{True,False}},{{showOffsetPolygonalSpirals,True,Style["Show offset polygonal spirals",FontSize->14]},{True,False}},{{showFloretSpiral,True,Style["Show floret spirals",FontSize->14]},{True,False}},{{showFlorets1,False,Style["Show additional florets superimposed",FontSize->14]},{True,False}},{{colorSpirals,True,Style["Color spirals",FontSize->14]},{True,False}},{{floretColorScheme,"Gray",Style["Floret color",FontSize->14]},{"Red","White","Green","Black","Gray"},ControlType->PopupMenu},
Delimiter,TrackedSymbols->True,ControlPlacement->Left]