|
| 1 | +""" |
| 2 | +Day 24 - Christmas Tree Balls |
| 3 | +
|
| 4 | +Colored balls moving against a glittering white background. |
| 5 | +Merry Christmas! |
| 6 | +""" |
| 7 | + |
| 8 | +from xled_plus.samples.sample_setup import * |
| 9 | + |
| 10 | +class ChristmasBallsScene(MovingShapesScene): |
| 11 | + def __init__(self, ctr, cols): |
| 12 | + super(ChristmasBallsScene, self).__init__(ctr) |
| 13 | + self.freq = 0.5 |
| 14 | + self.colors = cols |
| 15 | + self.whites = [hsl_color(0.4, 0.5, 0.2), hsl_color(0.1, 0.5, 0.2), hsl_color(0.0, 0.0, 0.2)] |
| 16 | + self.blink = hsl_color(0.0, 0.0, 1.0) |
| 17 | + self.bgpat = make_random_select_color_pattern(ctr, self.whites) |
| 18 | + self.preferred_frames = 640 |
| 19 | + |
| 20 | + def create(self): |
| 21 | + tp = int(random() * len(self.colors)) |
| 22 | + speed = 0.02 |
| 23 | + angle = random() * 2 * m.pi |
| 24 | + offset = (random() - 0.5) * 1.6 |
| 25 | + vec = (m.sin(angle), m.cos(angle)) |
| 26 | + cent = (-vec[0] * 1.5 + vec[1] * offset, -vec[1] * 1.5 - vec[0] * offset) |
| 27 | + vel = (vec[0] * speed, vec[1] * speed) |
| 28 | + nstep = int(3.0 / speed) |
| 29 | + sh = Ellipse(cent, 0.0, 0.16, 0.16, self.colors[tp]) |
| 30 | + sh.set_speed(vel[0], vel[1]) |
| 31 | + sh.set_depth(0.0) |
| 32 | + sh.duetime = self.time + nstep |
| 33 | + return sh |
| 34 | + |
| 35 | + def getnext(self): |
| 36 | + pat1 = super(ChristmasBallsScene, self).getnext() |
| 37 | + patbg = sprinkle_pattern(self.ctr, self.bgpat, [self.blink], 0.05*self.ctr.num_leds) |
| 38 | + vec = self.getoccupancy() |
| 39 | + pat = [pat1[i] if vec[i] else patbg[i] for i in range(self.ctr.num_leds)] |
| 40 | + return pat |
| 41 | + |
| 42 | +ctr = setup_control() |
| 43 | +ctr.adjust_layout_aspect(1.0) # How many times wider than high is the led installation? |
| 44 | +cols = [hsl_color(0.625, 1.0, -0.15), hsl_color(0.26, 1.0, -0.11), hsl_color(0.42, 1.0, -0.05), hsl_color(0.54, 1.0, -0.15)] |
| 45 | +# cols = [hsl_color(0.44, 1.0, -0.21), hsl_color(0.44, 1.0, 0.11), hsl_color(0.625, 1.0, -0.17), hsl_color(0.625, 1.0, 0.11)] |
| 46 | +ChristmasBallsScene(ctr, cols).launch_movie() |
0 commit comments