// Last edited on 2017-05-07 20:05:49 by stolfilocal // Processed by remove-cam-lights background{ color rgb < 0.75, 0.80, 0.85 > } #macro package(centerPosition) #declare packageTexture = texture{ pigment{ color rgb < 1, 0, 1 > } } #declare packageRadius = 0.6; object{ union{ sphere{ centerPosition, packageRadius} sphere{ centerPosition + <0, 0, packageRadius>, packageRadius/3} sphere{ centerPosition + <0, 0, -packageRadius>, packageRadius/3} sphere{ centerPosition + <0, packageRadius, 0>, packageRadius/3} sphere{ centerPosition + <0, -packageRadius, 0>, packageRadius/3} sphere{ centerPosition + , packageRadius/3} sphere{ centerPosition + <-packageRadius, 0, 0>, packageRadius/3} } texture{ packageTexture } } #end #macro connection(node1Pos, node2Pos, hasPackage, packageLoad) #declare connectionTexture = texture{ pigment{ color rgb < 0, 1, 1 > } } union { object { cylinder{ node1Pos, node2Pos, 0.1 } texture{ connectionTexture } } #if(hasPackage = 1) #declare packageCenter = (1-packageLoad)*node1Pos + packageLoad*node2Pos; object{ package(packageCenter) } #end } #end #declare maxRange = 50; #macro network(nodesCount, connectionsCount) #declare randomizer = seed(500); #declare maxWeight = 10; #declare weight = 10; #declare nodesPositions = array[nodesCount] #declare nodesColors = array[nodesCount] union { #declare i = 0; #while(i < nodesCount) #declare nodeRadius = 1; #declare nodeColor = weight/maxWeight; #declare nodePosition = ; #declare nodeTexture = texture{ pigment{ color rgb < nodeColor, nodeColor, nodeColor > } } object{ sphere{ nodePosition, nodeRadius } texture{ nodeTexture } } #declare nodesPositions[i] = nodePosition; #declare nodesColors[i] = nodeColor; #declare i = i+1; #end #declare i = 0; #while(i < connectionsCount) #declare index1 = int((nodesCount-1)*rand(randomizer)); #declare index2 = int((nodesCount-2)*rand(randomizer)); #if(index2 >= index1) #declare index2 = index2+1; #end #declare node1Pos = nodesPositions[index1]; #declare node2Pos = nodesPositions[index2]; connection(node1Pos, node2Pos, (rand(randomizer) < 0.5), rand(randomizer)) #declare i = i+1; #end } #end #include "eixos.inc" union{ object{ eixos(3.00) } object{ network(100, 200) } } #include "camlight.inc" #declare centro_cena = 0.5*maxRange * < 1, 1, 1 >; #declare raio_cena = 1.00*maxRange; #declare dir_camera = < 14.00, 7.00, 4.00 >; #declare dist_camera = 8*raio_cena; #declare intens_luz = 1.00; camlight(centro_cena, raio_cena, dir_camera, dist_camera , z, intens_luz)