self.Y = Y self.posX = np.random.random() * (self.X - 1) self.posY = np.random.random() * (self.Y - 1) / 12.0 self.speed = 0.0 #2.0 + 15.0*np.random.random() self.accel = 5.0 + 40.0 * np.random.random() def iterate(self, dt): self.speed = self.speed + self.accel * dt self.posY = self.posY + dt * self.speed return (np.round(self.posX), np.round(self.posY)) rate = 60.0 # Generation rate if len(sys.argv) > 1: g = g3d2.g3d2(sys.argv[1]) else: g = g3d2sim.g3d2sim() drops = [] t0 = time() field = np.zeros((72, 32)) while True: t1 = time() dt = t1 - t0 t0 = t1 for drop in drops: drop.iterate(dt)
# for y in range(32): # if field[x, y] < edge0: # dfield[x, y] = 0 # elif field[x, y] > edge1: # dfield[x, y] = 15 # else: # dfield[x, y] = np.uint8(np.round(15.0 * (field[x, y] - edge0) / (edge1 - edge0))) return dfield.transpose() SPEED = 1.0 #N = 10 N = 60 tstart = time.time() g = g3d2.g3d2('/dev/ttyUSB0') m = Mbs() mbs = np.zeros([N, 4]) #mbs[:, 2] = np.random.random([1, N]) * 4.0 + 8.0 mbs[:, 2] = np.random.random([1, N]) * 2.0 + 2.0 mbs[:, 3] = 1.0 fs = np.random.randn(N, 2) / 6 while True: t = time.time() - tstart mbs[:, 0:2] = (1.0 + np.cos(2 * np.pi * fs * t)) * np.tile([36.0, 16.0], (N, 1)) f = m.build_field_march(mbs, 0.0, 0.8) g.write_screen(list(f.transpose().flatten()))
import life import numpy as np import g3d2 import g3d2sim import sys from time import sleep rate = 10.0 # Frame rate (wished) restart = 30.0 # Reinitialize after this amount of seconds if len(sys.argv) > 1: g = g3d2.g3d2(sys.argv[1]) else: g = g3d2sim.g3d2sim() l = life.Life() l.randomize() screen = np.zeros(np.shape(l.field), dtype=np.int8) iters = 0 while True: sc_old = screen screen = np.maximum(0, screen / 2) screen[l.field > 0] = np.minimum(np.maximum(sc_old[l.field > 0] + 2, 8), 15) g.write_screen(screen.transpose().flatten()) l.iterate() sleep(1 / rate) iters = iters + 1 if iters >= rate*restart: for i in range(15, -1, -1):
dfield[field > edge1] = 15 #for x in range(72): # for y in range(32): # if field[x, y] < edge0: # dfield[x, y] = 0 # elif field[x, y] > edge1: # dfield[x, y] = 15 # else: # dfield[x, y] = np.uint8(np.round(15.0 * (field[x, y] - edge0) / (edge1 - edge0))) return dfield.transpose() SPEED = 1.0 #N = 10 N = 60 tstart = time.time() g = g3d2.g3d2('/dev/ttyUSB0') m = Mbs() mbs = np.zeros([N, 4]) #mbs[:, 2] = np.random.random([1, N]) * 4.0 + 8.0 mbs[:, 2] = np.random.random([1, N]) * 2.0 + 2.0 mbs[:, 3] = 1.0 fs = np.random.randn(N, 2) / 6 while True: t = time.time() - tstart mbs[:, 0:2] = (1.0+np.cos(2 * np.pi * fs * t)) * np.tile([36.0, 16.0], (N, 1)) f = m.build_field_march(mbs, 0.0, 0.8) g.write_screen(list(f.transpose().flatten()))