Mercurial > code > home > repos > light9
view light9/chase.py @ 1936:aeb1e5a3079c
add hunter pkg for tracing code
Ignore-this: 9c55901d61d26a93512f2b7873ceb7a7
author | Drew Perttula <drewp@bigasterisk.com> |
---|---|
date | Sun, 02 Jun 2019 11:39:20 +0000 |
parents | 1aa91a31c0e2 |
children |
line wrap: on
line source
def chase(t, ontime=0.5, offset=0.2, onval=1.0, offval=0.0, names=None, combiner=max): names = names or [] # maybe this is better: # period = ontime + ((offset + ontime) * (len(names) - 1)) period = (offset + ontime) * len(names) outputs = {} for index, name in enumerate(names): # normalize our time local_offset = (offset + ontime) * index local_t = t - local_offset local_t %= period # see if we're still in the on part if local_t <= ontime: value = onval else: value = offval # it could be in there twice (in a bounce like (1, 2, 3, 2) if name in outputs: outputs[name] = combiner(value, outputs[name]) else: outputs[name] = value return outputs if __name__ == "__main__": # a little testing for x in range(80): x /= 20.0 output = chase(x, onval='x', offval=' ', ontime=0.1, offset=0.2, names=('a', 'b', 'c', 'd')) output = sorted(list(output.items())) print("%.2f\t%s" % (x, ' '.join([str(x) for x in output])))