// these lines alway lead to rounding errors, don't know what to do about it #declare RA1 = seed(3949); #declare linewidth = linespace *3 / 110; #declare xp = 1; #while (xp <= Width) #declare amp = ((Width-1)/2 - abs((Width + 1)/2 - xp)) * 0.01 / (Width*4/19); #declare f1 = rand(RA1)*30 + 2; #declare f2 = rand(RA1)*30 + 2; #declare f3 = rand(RA1)*30 + 2; #declare f4 = rand(RA1)*30 + 2; #declare f5 = rand(RA1)*30 + 2; #declare f6 = rand(RA1)*30 + 2; #declare f7 = rand(RA1)*30 + 2; #declare f8 = rand(RA1)*30 + 2; #declare o = 0; #while (o < 1000) #declare m = 0.55-linespace/2+xp*linespace + sin(o/1000*f1+f5)*amp + sin(o/1000*f2+f6)*amp + sin(o/1000*f3+f7)*amp + sin(o/1000*f4+f8)*amp; sphere { linewidth texture { pigment { color 0 } } } #declare o = o + 1; #end #declare e1 = rand(RA1)*30 + 2; #declare e2 = rand(RA1)*30 + 2; #declare e3 = rand(RA1)*30 + 2; #declare e4 = rand(RA1)*30 + 2; #declare e5 = rand(RA1)*30 + 2; #declare e6 = rand(RA1)*30 + 2; #declare e7 = rand(RA1)*30 + 2; #declare e8 = rand(RA1)*30 + 2; #declare o = 0; #while (o < 1000) #declare m = 0.55-linespace/2+xp*linespace + sin(o/1000*e1+e5)*amp + sin(o/1000*e2+e6)*amp + sin(o/1000*e3+e7)*amp + sin(o/1000*e4+e8)*amp; sphere { <0.55+linespace/2+o*(Width-1)*linespace/1000,m, 0> linewidth texture { pigment { color 0 } } } #declare o = o + 1; #end #declare xp = xp + 1; #end // and now for the complicates part: the point at the special places for markers // because of the crooky lines I don't know the position of the intersection of // the lines so I have to make an iteration #declare xpoint = 1; #while (xpoint <= Width) #declare ypoint = 1; #while (ypoint <= Width) #if ((Width = 19) * ((xpoint = 4) + (xpoint = 10) + (xpoint = 16)) * ((ypoint = 4) + (ypoint = 10) + (ypoint = 16)) + (Width = 13) * ((xpoint = 4) + (xpoint = 7) + (xpoint = 10)) * ((ypoint = 4) + (ypoint = 7) + (ypoint = 10)) + (Width = 9) * (((xpoint = 3) + (xpoint = 7))* ((ypoint = 3) + (ypoint = 7)) + (xpoint = 5) * (ypoint = 5))) // first find the necessary parameter for the functions #declare RA1 = seed(3949); #declare o = 1; #while (o <= Width) #if (o = xpoint) #declare f1 = rand(RA1)*30 + 2;#declare f2 = rand(RA1)*30 + 2;#declare f3 = rand(RA1)*30 + 2;#declare f4 = rand(RA1)*30 + 2; #declare f5 = rand(RA1)*30 + 2;#declare f6 = rand(RA1)*30 + 2;#declare f7 = rand(RA1)*30 + 2;#declare f8 = rand(RA1)*30 + 2; #declare ampF = ((Width-1)/2 - abs((Width + 1)/2 - o)) * 0.01 / (Width*4/19); #else #declare tmp = rand(RA1);#declare tmp = rand(RA1);#declare tmp = rand(RA1);#declare tmp = rand(RA1); #declare tmp = rand(RA1);#declare tmp = rand(RA1);#declare tmp = rand(RA1);#declare tmp = rand(RA1); #end #if (o = ypoint) #declare e1 = rand(RA1)*30 + 2;#declare e2 = rand(RA1)*30 + 2;#declare e3 = rand(RA1)*30 + 2;#declare e4 = rand(RA1)*30 + 2; #declare e5 = rand(RA1)*30 + 2;#declare e6 = rand(RA1)*30 + 2;#declare e7 = rand(RA1)*30 + 2;#declare e8 = rand(RA1)*30 + 2; #declare ampE = ((Width-1)/2 - abs((Width + 1)/2 - o)) * 0.01 / (Width*4/19); #else #declare tmp = rand(RA1);#declare tmp = rand(RA1);#declare tmp = rand(RA1);#declare tmp = rand(RA1); #declare tmp = rand(RA1);#declare tmp = rand(RA1);#declare tmp = rand(RA1);#declare tmp = rand(RA1); #end #declare o = o + 1; #end // now iterate over the point #declare o = 0; #declare xpos = xpoint*linespace * 1000 / (19*linespace); #while(o < 1000) #declare ypos = (xpoint*linespace + sin(xpos/1000*e1+e5)*ampE + sin(xpos/1000*e2+e6)*ampE + sin(xpos/1000*e3+e7)*ampE + sin(xpos/1000*e4+e8)*ampE) * 1000 / (19*linespace); #declare xpos = (ypoint*linespace + sin(ypos/1000*f1+f5)*ampF + sin(ypos/1000*f2+f6)*ampF + sin(ypos/1000*f3+f7)*ampF + sin(ypos/1000*f4+f8)*ampF) * 1000 / (19*linespace); #declare o = o + 1; #end #declare xpos = (xpos * 19 * linespace / 1000) + 0.55 - linespace/2; #declare ypos = (ypos * 19 * linespace / 1000) + 0.55 - linespace/2; sphere { linewidth*5 texture { pigment { color 0 } } } #end #declare ypoint = ypoint + 1; #end #declare xpoint = xpoint + 1; #end