#macro mesh_cristal(min_sides,max_sides,diam, height,var,top,rand_seed) #local nb_sides = min_sides+floor (0.5 +(max_sides-min_sides)*rand(rand_seed) ); #declare angles = array [ nb_sides ]; // angles #declare bases = array [ nb_sides ]; #declare mi_hauteurs = array [ nb_sides ]; #declare sommets = array [ nb_sides] ; // some random values #local i=0; #while (iangles[j]) #local temp = angles[i]; #declare angles[i]=angles[j]; #declare angles[j]=temp; #end //if #declare j=j+1; #end // while (j #declare i=i+1; #end // while (i #local i=0; #while (i, <0,angles[i],0 >); #declare mi_hauteurs[i]=bases[i]+<0,height+rand(rand_seed)*var,0>; #declare i=i+1; #end mesh { #local i=0; #while (i,rand(rand_seed)*360); // some vector in the x-z plane #local random_angle = rand(rand_seed)*15; #local i=0; #while (i; #declare i=i+1; #end #local i=0; #while (iangles[j]) #local temp = angles[i]; #declare angles[i]=angles[j]; #declare angles[j]=temp; #end //if #declare j=j+1; #end // while (j #declare i=i+1; #end // while (i #local i=0; #while (i, <0,angles[i],0 >); #declare mi_hauteurs[i]=bases[i]+<0,height+rand(rand_seed)*var,0>; #declare mi_profondeurs[i]=bases[i]-<0,height+rand(rand_seed)*var,0>; #declare i=i+1; #end mesh { #local i=0; #while (i,rand(rand_seed)*360); // some vector in the x-z plane #local random_angle = rand(rand_seed)*15; #local i=0; #while (i; #declare i=i+1; #end #local i=0; #while (i,rand(rand_seed)*360); // some vector in the x-z plane #local random_angle = rand(rand_seed)*15; #local i=0; #while (i; #local i=i+1; #end #local i=0; #while (i