/* * H E X A S T A R * * nouveau du dernier jour de 2025, courage paur 2026 <3 */ /* ------------------------------------------------------------ */ /* ============================================================ */ /* Un des six éléments de base */ #declare HS_radius = 0.409; #macro HS_element_pointe () union { #local R_a = HS_radius * 0.33333; #local Small = 0.00001; cone { <-1.34, 0, 0>, Small, <-0.6, 0, 0>, R_a } sphere { 0, R_a scale <0.3, 1, 1> translate <-0.6, 0, 0> } #local R = rand(Rng1); #if ( R < 0.45 ) texture { GoldDark } #elseif ( R < 0.60 ) texture { Aluminum } #else texture { T_Gold_3C } #end } #end // macro /* ------------------------------------------------------------ */ /* * element central --- À REFAIRE EN MACRO ! */ #macro HS_element_central () union { #local HSCR = HS_radius*0.70; torus { HSCR, 0.0180 } // le noyau central #local L = 0.0028; #local R = 0.0577; cylinder { -y*L, y*L, R } sphere { 0, R translate -y*L } sphere { 0, R translate y*L } // les ailettes intérieures #for (foo, 0, 5) cylinder { 0, x*HSCR, R*0.15 rotate y*foo*60 } #end // traitement final scale <1, 23.10, 1> rotate z*90 #local R = rand(Rng1); #if ( R < 0.17 ) texture { Y_Texture } #elseif ( R < 0.66 ) texture { T_Gold_1A } #else texture { Aluminum } #end } #end /* ------------------------------------------------------------ */ /* nouveau 14 janvier 2026 */ #macro HS_element_queue () union { #local R_a = HS_radius * 0.2222; #local Small = 0.001; cone { < 0.44, 0, 0>, Small, < 0.88, 0, 0>, R_a } sphere { 0, R_a scale <0.7, 1, 1> translate <0.88, 0, 0> } #local R = rand(Rng1); #if ( R < 0.35 ) texture { Rust rotate y*(rand(Rng1)*133)} #elseif ( R < 0.50 ) texture { T_Gold_5A } #elseif ( R < 0.80 ) texture { Aluminum } #else texture { T_Gold_3C } #end } #end // macro /* ------------------------------------------------------------ */ /* nouveau XXX janvier 2026 */ // UNE ANTENNE ? /* ============================================================ */ /* On regroupe les N*six élements */ #declare HS_les_elements = object { union { #for (Foo, 0, 360, 60) #local E = HS_radius; #local Ty = E * cos(radians(Foo)); #local Tz = E * sin(radians(Foo)); union { object { HS_element_pointe () translate <0, Ty*1.16, Tz*1.16> } object { HS_element_queue () translate <0, Ty, Tz> } } #end // end for object { HS_element_central () } // object { Repere } } } /* ============================================================ */ /* Et voici l'engin final */ #declare HexaStar = object { object { HS_les_elements } } // #debug "++++++++++ hexastar loaded !\n" /* ============================================================ */