for(i=[-0:1/160:1])translate([i,0])square([1/160, ( ( stepramp(i,bi1=1/5,bi2=4/5,start=1/3, end=2/3) )) ]);
function stepramp(v,bi1=1/5,bi2=4/5,start=1/3, end=2/3) =
let(b1=min(bi1,bi2),b2=max(bi1,bi2))
v<=b1?ramp(v,0,b1,0,start):v<=b2?lerp(start,end,(v-b1)/(b2-b1)) :ramp(v,b2,1,end,1);
function ramp(v,bi1=1/3,bi2=2/3,start=1/3, end=2/3) =
let(b1=min(bi1,bi2),b2=max(bi1,bi2))
v<=b1?start:v<=b2?lerp(start,end,(v-b1)/(b2-b1)) :end;
function lerp(start, end, bias) = (end * bias + start * (1 - bias));
No comments:
Post a Comment