// Lazo heater - collector (original design, axial cylinder) // Last edited on 2005-08-29 08:27:39 by stolfi // Radius of holder tube: #macro collector_holder_radius(rad) 0.200*rad #end // The collector object: #macro collector(ht, rad) #local boiler_gap = 0.005; // Key dimensions #local top_gap = 0.005*ht; // Gap between glass lid and collector #local bot_gap = 0.020*ht; // Gap between collector and mirror base #local boiler_warmer_gap = 0.005*ht; #local boiler_ht = 0.300*ht; #local top_gap = 0.005*ht; #local holder_ext = 0.100*ht; #local holder_rad = collector_holder_radius(rad); #local eps = 0.001*ht; // Fudging length // The boling collector #local boiler_zmin = -1.000*ht + bot_gap; #local boiler_zmax = boiler_zmin + boiler_ht; #local boiler_texture = texture { pigment { color rgb < 1.000, 0.200, 0.000 > } finish { ambient 1.00 diffuse 0.00 } } #local boiler = cylinder { <0,0,boiler_zmin>, <0,0,boiler_zmax>, rad texture { boiler_texture } } // The warming collector: #local warmer_zmin = boiler_zmax + boiler_warmer_gap; #local warmer_zmax = 00.000*ht - top_gap; #local warmer_texture = texture { pigment { color rgb < 0.900, 1.000, 0.000 > } finish { ambient 1.00 diffuse 0.00 } } #local warmer = cylinder { <0,0,warmer_zmin>, <0,0,warmer_zmax>, rad texture { warmer_texture } } // The mounting tube #local holder_zmin = -1.000*ht - holder_ext; #local holder_zmax = 00.000*ht - top_gap - eps; #local holder_texture = texture { pigment { color rgb < 0.050, 0.020, 0.020 > } finish { ambient 0.20 diffuse 0.80 } } #local holder = cylinder { <0,0,holder_zmin>, <0,0,holder_zmax>, holder_rad texture { holder_texture } } // Together now: union { object { boiler } object { warmer } object { holder } } #end // Hole-driller for mounting the collector on the mirror: #macro collector_hole(ht, rad) #local cyl_rad = rad + 0.005; cylinder { < 0, 0, -2.000*ht>, < 0, 0, +1.000*ht >, rad } #end