예제 #1
0
        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)
예제 #2
0
        #      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()))
예제 #3
0
파일: g3d2life.py 프로젝트: polygon/pyg3d2
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):
예제 #4
0
파일: metaballs.py 프로젝트: polygon/pyg3d2
    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()))