def generate(self, step, dumpworld): # generate empty world world1 = np.zeros([10, 10, 10]) world2 = np.zeros([10, 10, 10]) world = np.zeros([3, 10, 10, 10]) # create new point if self.brightness <= 0.0: self.counter = 0 self.pos = [randint(2, 8), randint(2, 8), randint(2, 8)] self.dir *= -1 self.pos1 = [randint(2, 8), randint(2, 8), randint(2, 8)] # change direction if self.brightness >= 1.0: self.dir *= -1 self.pos2 = [randint(2, 8), randint(2, 8), randint(2, 8)] self.brightness = np.clip(self.brightness + self.dir * self.speed, 0, 1) world1[:, :, :] = gen_shooting_star(self.pos1[0], self.pos1[1], self.pos1[2]) world2[:, :, :] = gen_shooting_star(self.pos2[0], self.pos2[1], self.pos2[2]) # print(self.brightness, 1 - self.brightness) world[0, :, :, :] = world1 * self.brightness + world2 * ( 1.0 - self.brightness) world[1, :, :, :] = world[0, :, :, :] world[2, :, :, :] = world[0, :, :, :] return np.clip(world, 0, 1)
def generate(self, step, dumpworld): world = np.zeros([3, 10, 10, 10]) # every <refresh> frames: generate new vector if step == 0 or step % self.speed == 0: self.switch *= -1 if self.switch == -1: self.v = gen_line(self.p1, self.p2, self.speed) self.p = self.p1 self.p1 = [10, uniform(-1, 10), uniform(-1, 10)] else: self.v = gen_line(self.p2, self.p1, self.speed) self.p = self.p2 self.p2 = [-1, uniform(-1, 10), uniform(-1, 10)] [sx, sy, sz] = s(self.p, self.v, step % self.speed) # switch on leds depending on distance world[0, :, :, :] = np.rot90(gen_shooting_star(sx, sy, sz), axes=[0, 1], k=0) if self.direction == 1: world[0, :, :, :] = np.rot90(world[0, :, :, :], k=1, axes=(0, 1)) elif self.direction == 2: world[0, :, :, :] = np.rot90(world[0, :, :, :], k=1, axes=(0, 2)) world[1, :, :, :] = world[0, :, :, :] world[2, :, :, :] = world[0, :, :, :] return np.clip(world, 0, 1)
def generate(self, step, dumpworld): world = np.zeros([3, 10, 10, 10]) # every <refresh> frames: generate new vector if step == 1 or step % self.refresh == 0: self.s0, self.v = gen_line(self.speed) [sx, sy, sz] = s(self.s0, self.v, step % self.refresh) # return current position of shooting star # switch on leds depending on distance world[0, :, :, :] = gen_shooting_star(sx, sy, sz) world[1, :, :, :] = world[0, :, :, :] world[2, :, :, :] = world[0, :, :, :] return np.clip(world, 0, 1)
def generate(self, step, dumpworld): # generate empty world world = np.zeros([3, 10, 10, 10]) # generate current position temp_d = self.distance temp_theta = sawtooth(self.theta * step) * np.pi temp_rho = np.sin(self.rho * step) [sx, sy, sz] = polar2z(temp_d, temp_theta, temp_rho) # switch on leds depending on distance world[0, :, :, :] = gen_shooting_star(sx + 4.5, sy + 4.5, sz + 4.5) world[1, :, :, :] = world[0, :, :, :] world[2, :, :, :] = world[0, :, :, :] return world