mirror of
https://github.com/brmlab/ledbar.git
synced 2025-06-12 23:03:52 +02:00
rainbow2d: nicer distance function !!
This commit is contained in:
parent
a6e28d711b
commit
04d3f079db
1 changed files with 16 additions and 6 deletions
|
@ -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):
|
def set_pixel_2d(bar, x, y, r, g, b):
|
||||||
bar.set_pixel(WIDTH - x - 1 + y*WIDTH, 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):
|
def cdist(center, point, scale):
|
||||||
dist = math.sqrt(reduce(
|
from operator import add,sub
|
||||||
lambda a,b: a+b,
|
from math import sqrt
|
||||||
map(lambda (x,y): (x-y)**2, zip(center,point))
|
from functools import partial
|
||||||
))
|
return scale*sqrt(reduce(add, map(combine(partial(flip(pow),2),sub),center,point)))
|
||||||
dist = dist*scale
|
|
||||||
return dist
|
|
||||||
|
|
||||||
l = Ledbar(PIXELS)
|
l = Ledbar(PIXELS)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue