slim 1 extensions hosuk { extensions scad ho { template float dots { parameter float radius_s { detail varying default 0.05 } parameter float radius_t { detail varying default 0.05 } parameter float numOfDots_s { detail varying default 10 } parameter float numOfDots_t { detail varying default 10 } collection void Randomize { state open parameter float randomize_s { detail varying default 0 } parameter float randomize_t { detail varying default 0 } parameter float s_frq { detail varying default 1 } parameter float t_frq { detail varying default 1 } } parameter float result { access output display hidden default 0 } RSLSource StaticFunction { void hodots(float radius_s,radius_t, numOfDots_s, numOfDots_t, randomize_s,randomize_t, s_frq,t_frq ; output float result;) { float s_center = 0, t_center = 0; float distance = 0; result = 0; float noiseSeed_s = 0,noiseSeed_t = 0; uniform float ns = 0,nt = 0; for(ns=0; ns < numOfDots_s; ns+=1){ for(nt=0;nt < numOfDots_t ; nt += 1){ s_center = ns * (1/(numOfDots_s)) + ((1/(numOfDots_s))/2); t_center = nt * (1/numOfDots_t)+ ((1/(numOfDots_t))/2); noiseSeed_s += s_frq*1.001; s_center += ((noise(noiseSeed_s)*2.0)-1.0)*randomize_s; noiseSeed_t += t_frq*1.001; t_center += ((noise(noiseSeed_t)*2.0)-1.0)*randomize_t; distance = sqrt(pow((s_center - s)/radius_s,2) + pow((t_center - t)/radius_t,2)); result += 1-smoothstep(0,1,distance); } } //result = smoothstep(0,1,result); } }}}}