// basic WTEL logo // Requires // wtel_logo_hub_texture // wtel_logo_host_texture // wtel_logo_link_texture // wtel_logo_trunk_texture // wtel_logo_sat_wing_texture // wtel_logo_sat_body_texture // wtel_logo_beam_texture // wtel_logo_beam_radius // wtel_logo_beam_step // wtel_logo_hub_radius // wtel_logo_host_radius // wtel_logo_link_radius // wtel_logo_trunk_radius // wtel_logo_net_radius // wtel_logo_link_length // wtel_logo_sat_altitude // wtel_logo_sat_body_radius // wtel_logo_sat_body_height // wtel_logo_sat_wing_length // wtel_logo_sat_wing_width // wtel_logo_sat_wing_tilt_x // wtel_logo_sat_wing_tilt_z // Defines // wtel_logo // Big and small radius #declare wtel_r = wtel_logo_host_radius #declare wtel_R = wtel_logo_hub_radius #declare wtel_s = wtel_logo_link_radius #declare wtel_S = wtel_logo_trunk_radius // The hubs and hosts #declare wtel_logo_hub = sphere{ <0,0,0>, wtel_R texture{ wtel_logo_hub_texture } } #declare wtel_logo_host = sphere{ <0,0,0>, wtel_r texture{ wtel_logo_host_texture } } // Origin: #declare o = < 0, 0, 0 > // Host positions relative to hub: #declare hp = wtel_logo_link_length * z #declare hs = wtel_logo_host_sink * y #declare h0 = vaxis_rotate( 1.0 * hp, y, +05 ) - 1.0 * hs #declare h1 = vaxis_rotate( 0.8 * hp, y, +55 ) - 0.7 * hs #declare h2 = vaxis_rotate( 0.9 * hp, y, -50 ) - 0.8 * hs // A hub and its links, with hub at origin: #declare wtel_logo_cluster = merge{ merge{ object{ wtel_logo_hub } object{ wtel_logo_host translate h0 } object{ wtel_logo_host translate h1 } object{ wtel_logo_host translate h2 } } merge{ cylinder{ o, h0, wtel_s } cylinder{ o, h1, wtel_s } cylinder{ o, h2, wtel_s } texture{ wtel_logo_link_texture } } } // Hub centers: #declare v0 = wtel_logo_net_radius * <00, 00, +1 > #declare v1 = vaxis_rotate( v0, y, 72 ) #declare v2 = vaxis_rotate( v0, y, 144 ) #declare v3 = vaxis_rotate( v0, y, 216 ) #declare v4 = vaxis_rotate( v0, y, 288 ) // The satellite: #declare wtel_logo_sat_pos = wtel_logo_sat_altitude * y #include "wtel-logo-sat.inc" // The satellite links: #declare wtel_logo_station_1_pos = v1 #declare wtel_logo_station_2_pos = v3 #declare wtel_logo_station_3_pos = v4 #include "wtel-logo-beams.inc" // The network: #declare wtel_logo_net = merge{ merge{ object{ wtel_logo_cluster translate v0 } object{ wtel_logo_cluster translate v0 rotate 072*y } object{ wtel_logo_cluster translate v0 rotate 144*y } object{ wtel_logo_cluster translate v0 rotate 216*y } object{ wtel_logo_cluster translate v0 rotate 288*y } } merge{ cylinder{ v0, v1, wtel_S } cylinder{ v1, v2, wtel_S } cylinder{ v2, v3, wtel_S } cylinder{ v3, v4, wtel_S } cylinder{ v4, v0, wtel_S } texture{ wtel_logo_trunk_texture } } } // The logo: #declare wtel_logo = union{ object{ wtel_logo_net } object{ wtel_logo_sat } object{ wtel_logo_beams } }