// Last edited on 2005-08-30 00:08:45 by stolfi // Profile given by Remigio on 2005-08-27, smoothed #macro heater_profile_num_points() 24 #end #macro heater_profile_radius() 1.000 #end #macro heater_profile_height() #local m = 1.000/1.500; // To scale Remigio's design to 1m radius 1.320*m #end #macro heater_profile_points() #local N = heater_profile_num_points(); #local BB = array[N] // Corners: #local BB[ 0] = < +0.020, -1.320 >; #local BB[ 3] = < +0.290, -1.310 >; #local BB[ 7] = < +0.720, -1.200 >; #local BB[11] = < +1.150, -0.950 >; #local BB[15] = < +1.400, -0.630 >; #local BB[19] = < +1.490, -0.260 >; #local BB[23] = < +1.500, 00.000 >; // Copy start points from finish points: #local i = 4; #while (i < N) #local BB[i] = BB[i-1]; #local i = i + 4; #end // Add intermediate control points: #local i = 0; #while (i <= N) #if (i = 0) #local tg = < (BB[3] - BB[0]).x, 0.000 >; #end #if (i = N) #local tg = < 0.000, (BB[N-1] - BB[N-4]).y >; #end #if ((i > 0) & (i < N)) #local tg = (BB[i+3] - BB[i-4])/2; #end #if (i < N) #local BB[i+1] = BB[i] + tg/3; #end #if (i > 0) #local BB[i-2] = BB[i-1] - tg/3; #end #local i = i + 4; #end // Scale Remigio's design from 1.5m radius to 1m radius: #local m = 1.000/1.500; #local i = 0; #while (i < N) #local BB[i] = m*BB[i]; #local i = i + 1; #end BB #end