#include "colors.inc" #include "shapes.inc" #include "camlight.inc" #declare component_color = texture { pigment { color rgb <0.2, 0.2, 0.2> } } #declare red_color = texture { pigment { color rgb <1, 0.2, 0.2> } } #macro Arc(sphere_count, A, B, C, D) sphere { A, 0.15 texture { red_color } } sphere { B, 0.15 texture { red_color } } sphere { C, 0.15 texture { red_color } } sphere { D, 0.15 texture { red_color } } #local per_segment = sphere_count/4; #local cur = A; #local sphere_radius = 0.1; #for (s, 1, per_segment, 1) sphere { cur, sphere_radius texture { component_color } } #declare cur = cur + (B - A)/per_segment; #end #declare cur = B; #for (s, 1, per_segment, 1) sphere { cur, sphere_radius texture { component_color } } #declare cur = cur + (C - B)/per_segment; #end #declare cur = C; #for (s, 1, per_segment, 1) sphere { cur, sphere_radius texture { component_color } } #declare cur = cur + (D - C)/per_segment; #end #end background { color rgb <0.7, 0.7, 0.7> } #declare arcs = array[4][4]; #declare arcs[0][0] = <0, 1, 4>; #declare arcs[0][1] = <0, 3, 6>; #declare arcs[0][2] = <0, 3, 7>; #declare arcs[0][3] = <0, 4, 8>; #declare arcs[1][0] = <0, 4, 8>; #declare arcs[1][1] = <0, 4.5, 6>; #declare arcs[1][2] = <0, 6, 6>; #declare arcs[1][3] = <0, 6, 3>; #declare arcs[2][0] = <0, 6, 3>; #declare arcs[2][1] = <0, 5, 4>; #declare arcs[2][2] = <0, 4, 3>; #declare arcs[2][3] = <0, 5, 0>; #declare arcs[3][0] = <0, 5, 0>; #declare arcs[3][1] = <0, 3, 0>; #declare arcs[3][2] = <0, 3, 2>; #declare arcs[3][3] = <0, 1, 4>; #for (i, 0, 3, 1) #declare end1 = (arcs[i][2] + arcs[mod(i+1, 4)][1]) / 2; #if (i = 0) #declare begin1 = (arcs[i][1] + arcs[3][2]) / 2; #else #declare begin1 = (arcs[i][1] + arcs[i-1][2]) / 2; #end // Este é o arco já contendo o alinhamento das tangentes Arc(100, begin1, arcs[i][1], arcs[i][2], end1) // Este é o arco sem alinhamento das tangentes, apenas com os pontos crus de "arcs" // Arc(100, arcs[i][0], arcs[i][1], arcs[i][2], arcs[i][3]) // Como não pude vir ao laboratório tp04, não possuia a função Interp3, // por isso as curvas não estão suavizadas. #end #declare center = <0.00, 5.00, 5.00>; #declare scene_radius = 12.0; #declare camera_direction = <14.00, 5.00, 5.00>; #declare camera_distance = 5 * scene_radius; #declare light_intensity = 1.20; camlight( center, scene_radius, camera_direction, camera_distance, z, light_intensity )