def get_color(self, offset): if offset < 0.0 or offset > 1.0: raise IndexError("Invalid offset.") for index in range(len(self.palette)): # skip the first item if index == 0: continue if self.palette[index][0] >= offset: section_begin_offset = self.palette[index - 1][0] section_end_offset = self.palette[index][0] percent = (offset - section_begin_offset) / ( section_end_offset - section_begin_offset) new_color = [] for color in range(3): new_color.append( int(self.palette[index - 1][1][color] + ((self.palette[index][1][color] - self.palette[index - 1][1][color]) * percent))) return Color(min(new_color[0], 255), min(new_color[1], 255), min(new_color[2], 255)) assert False
def pattern(self): bottles = geo.calculate_bottle_locations() self.trap.send_entropy() scale = 0 while True: for bottle, coord in enumerate(bottles): z = self.circle(coord[0], coord[1]) y = self.circle2(coord[0], coord[1]) self.trap.set_color(bottle + 1, Color(z % 255, 0, y % 255)) if self.stop_thread: break scale += .01 self.z_factor += .0005
def transition_sweep_clear(trap): for bottle, angle in geo.enumerate_all_bottles(): trap.set_color(bottle, Color(0, 0, 0)) sleep(.02)
def dim_color_with_arc_distance(angle0, angle1, color): delta = math.fabs(angle0 - angle1) dim = max(0.0, 1.0 - (delta / FADE_DIVISOR)) return Color(color.red * dim, color.green * dim, color.blue * dim)
#!/usr/bin/env python3 import os import sys import math import datetime from colorsys import hsv_to_rgb from random import random from hippietrap.hippietrap import HippieTrap, BROADCAST, NUM_NODES, NUM_RINGS from hippietrap.color import Color, ColorGenerator from hippietrap.geometry import HippieTrapGeometry from hippietrap.pattern import PatternBase, run_pattern from hippietrap.framebuffer import FrameBuffer from time import sleep, time SECONDS_COLOR = Color(255, 125, 25) MINUTES_COLOR = Color(86, 0, 255) HOURS_COLOR = Color(20, 204, 50) ANGLE_DELTA = 25 FADE_DIVISOR = 10 def dim_color_with_arc_distance(angle0, angle1, color): delta = math.fabs(angle0 - angle1) dim = max(0.0, 1.0 - (delta / FADE_DIVISOR)) return Color(color.red * dim, color.green * dim, color.blue * dim) class Pattern(PatternBase): geo = HippieTrapGeometry()
#!/usr/bin/env python3 import os import sys import math import random from time import sleep, time from hippietrap.hippietrap import HippieTrap, BROADCAST, NUM_NODES from hippietrap.color import Color with HippieTrap() as ch: ch.begin() start = int(sys.argv[1]) for id in range(start, NUM_NODES + 1): ch.set_color(id, Color(0, 0, 0)) for id in range(start, NUM_NODES + 1): print(id) ch.set_color(id, Color(0, 0, 255)) sleep(.25)
PERIOD = 1500 angle = .08 with HippieTrap() as ch: ch.begin() try: color_offset = 0.0 while True: for bottle in range(1, 14): array = [] rgb = hsv_to_rgb(random(), 1, 1) array.append( Color(int(255 * rgb[0]), int(255 * rgb[1]), int(255 * rgb[2]))) rgb = hsv_to_rgb(random(), 1, 1) array.append( Color(int(255 * rgb[0]), int(255 * rgb[1]), int(255 * rgb[2]))) rgb = hsv_to_rgb(random(), 1, 1) array.append( Color(int(255 * rgb[0]), int(255 * rgb[1]), int(255 * rgb[2]))) rgb = hsv_to_rgb(random(), 1, 1) array.append( Color(int(255 * rgb[0]), int(255 * rgb[1]), int(255 * rgb[2])))
def __init__(self, trap): super(PatternBase, self).__init__() self.trap = trap self.trap.set_color(ALL, Color(48, 0, 48))
#!/usr/bin/env python3 import os import sys import math from colorsys import hsv_to_rgb from random import random from hippietrap.hippietrap import HippieTrap, BROADCAST, NUM_NODES from hippietrap.color import Color from hippietrap.geometry import HippieTrapGeometry from time import sleep, time col = Color(255, 210, 70) if len(sys.argv) == 4: col = Color(int(sys.argv[1]), int(sys.argv[2]), int(sys.argv[3])) with HippieTrap() as ch: ch.begin() ch.set_color(BROADCAST, col)