def floor(val, flr):
if val < flr:
return flr
return val
def roof(val, rf):
if val > rf:
return rf
return val
def clamp(val, min, max):
if val > max:
return max
if val < min:
return min
return val
def step(val, thrs):
if val > thrs:
return 1
return 0
def smooth_step(x, a, b):
if x < a:
return 0
if x > b:
return 1
z = (x - a) / (b - a)
return z**2*(3-2*z)
def pulse(a, b):
if a < x < b:
return 1
return 0
def smooth_pulse(x, a, b):
z = (x - a) / (b - a)
return smooth_step(x, a - z, a) - smooth_step(x, b - z, b)
def repeat(x, a):
return x % a
def magnitude(coords):
return ([coords[i]**2 for i in range(len(coords))].sum())**2
def distance(coords1, coords2):
return magnitude([coords1[i]-coords2[i] for i in range(len(coords1))])
def turbulence(freq,coords):
turb = 0
f = 0
while(f < freq):
turb += abs(Blender.Noise(coords)) / f
return turb
def noise( ):
return Blender.Mathutils.Rand()