Beispiel #1
0
def gridSystem(n=8):
    global euler, collisions, screen
    w, h = screen.get_size()
    xstep = w / float(n)
    ystep = h / float(n)
    positions = []
    velocities = []
    masses = []
    for i in range(n):
        for j in range(n):
            positions.extend([i * xstep, j * ystep, 0.0])
            velocities.extend([0.0, 0.0, 0.0])
            masses.append(5.0 + N.random.random())
    psystem = ParticleSystem(positions, velocities, masses)
    for i in range(n):
        for j in range(n):
            p1 = i + j * n
            p2 = i + (j + 1) * n
            p3 = (i + 1) + j * n
            p4 = (i + 1) + (j + 1) * n
            if j + 1 < n:
                psystem.computeForces.append(
                    ("spring", p1, p2, 1.0, psystem.dist(p1, p2) * 1))
            if i + 1 < n:
                psystem.computeForces.append(
                    ("spring", p1, p3, 1.0, psystem.dist(p1, p3) * 1))
            if i + 1 < n and j + 1 < n:
                psystem.computeForces.append(
                    ("spring", p2, p3, 1.0, psystem.dist(p2, p3)))
                psystem.computeForces.append(
                    ("spring", p1, p4, 1.0, psystem.dist(p1, p4)))
    #for i in range(n):
    #psystem.setVel(i, N.array((8.0, 8.0, 0.0)))
    #psystem.setVel(i+n, N.array((0.0, -10.0, 0.0)))
    psystem.incPos(n * n - 1, N.array((30.0, 30.0, 0.0)))

    return psystem
def gridSystem(n=8):
    global euler, collisions, screen
    w,h = screen.get_size()
    xstep = w/float(n)
    ystep = h/float(n)
    positions = []
    velocities = []
    masses = []
    for i in range(n):
        for j in range(n):
            positions.extend([i*xstep, j*ystep, 0.0])
            velocities.extend([0.0, 0.0, 0.0])
            masses.append(5.0+N.random.random())
    psystem = ParticleSystem(positions, velocities, masses)
    for i in range(n):
        for j in range(n):
            p1 = i+j*n
            p2 = i+(j+1)*n
            p3 = (i+1)+j*n
            p4 = (i+1) + (j+1)*n
            if j+1 < n:
                psystem.computeForces.append(("spring", p1, p2, 1.0,
                                             psystem.dist(p1, p2)*1))
            if i+1 < n:
                psystem.computeForces.append(("spring", p1, p3, 1.0,
                                             psystem.dist(p1, p3)*1))
            if i+1 < n and j+1 < n:
                psystem.computeForces.append(("spring", p2, p3, 1.0,
                                              psystem.dist(p2,p3)))
                psystem.computeForces.append(("spring", p1, p4, 1.0,
                                              psystem.dist(p1, p4)))
    #for i in range(n):
        #psystem.setVel(i, N.array((8.0, 8.0, 0.0)))
        #psystem.setVel(i+n, N.array((0.0, -10.0, 0.0)))
    psystem.incPos(n*n-1, N.array((30.0, 30.0, 0.0)))

    return psystem