예제 #1
0
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
예제 #2
0
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