def curtainSystem(n=12): global euler, collisions, screen n w, h = screen.get_size() xstep = w / float(n) ystep = h / float(n) positions = [] velocities = [] masses = [] for j in range(n): for i in range(n): positions.extend([i * xstep, j * ystep, 0.0]) velocities.extend([0.0, 0.0, 0.0]) masses.append(5.0) psystem = ParticleSystem(positions, velocities, masses) down = N.array((0.0, 1.0, 0.0)) for j in range(n): for i in range(n): p1 = i + j * n psystem.makeConstant(p1, down, 32.0) p2 = i + (j + 1) * n p3 = (i + 1) + j * n p4 = (i + 1) + (j + 1) * n if j + 1 < n: psystem.makeStick(p1, p2) if i + 1 < n: psystem.makeStick(p1, p3) psystem.setVel((n / 2) * n - 1, N.array((1000 + N.random.random() * 1000.0, 0.0, 0.0))) for i in range(n): psystem.makePin(i) return psystem
def curtainSystem(n=12): global euler, collisions, screen n w,h = screen.get_size() xstep = w/float(n) ystep = h/float(n) positions = [] velocities = [] masses = [] for j in range(n): for i in range(n): positions.extend([i*xstep, j*ystep, 0.0]) velocities.extend([0.0,0.0,0.0]) masses.append(5.0) psystem = ParticleSystem(positions, velocities, masses) down = N.array((0.0,1.0,0.0)) for j in range(n): for i in range(n): p1 = i+j*n psystem.makeConstant(p1, down, 32.0) p2 = i+(j+1)*n p3 = (i+1)+j*n p4 = (i+1) + (j+1)*n if j+1 < n: psystem.makeStick(p1, p2) if i+1 < n: psystem.makeStick(p1, p3) psystem.setVel((n/2)*n-1, N.array((1000+N.random.random()*1000.0, 0.0, 0.0))) for i in range(n): psystem.makePin(i) return psystem