rainbow2d: nicer distance function !!

This commit is contained in:
Peter Boraros 2012-12-23 01:07:53 +01:00
parent a6e28d711b
commit 04d3f079db

View file

@ -35,13 +35,23 @@ corr_b_v = [0.0, 0.13, 0.18, 1.0]
def set_pixel_2d(bar, x, y, r, g, b):
bar.set_pixel(WIDTH - x - 1 + y*WIDTH, r, g, b)
def combine(*fncs):
return lambda *args: reduce(
id,
reduce(
lambda acc,fnc:(fnc(*acc),),
reversed(fncs),
args)
)
def flip(f):
return lambda *a: f(*reversed(a))
def cdist(center, point, scale):
dist = math.sqrt(reduce(
lambda a,b: a+b,
map(lambda (x,y): (x-y)**2, zip(center,point))
))
dist = dist*scale
return dist
from operator import add,sub
from math import sqrt
from functools import partial
return scale*sqrt(reduce(add, map(combine(partial(flip(pow),2),sub),center,point)))
l = Ledbar(PIXELS)