Пример #1
0
def randomSystem(n, connect="stick"):
    global euler, collisions, screen
    w, h = screen.get_size()
    size = min(w, h)
    positions = N.random.random(3 * n) * size / 2.0 + size / 3.0
    positions[2::3] = 0.0
    velocities = N.random.random(3 * n) * 10.0 - 5.0
    velocities[2::3] = 0.0
    masses = N.random.random(n) * 10.0 + 5.0
    psystem = ParticleSystem(positions, velocities, masses)
    psystem.collisions = collisions
    psystem.euler = euler
    psystem.makePin(0)
    psystem.makePin(n - 1)
    for i in range(0, psystem.n - 3, 3):
        psystem.makeTriangle(i, i + 1, i + 2)
        if connect == "spring":
            psystem.computeForces.append(("spring", i + 2, i + 3, 1.0, 100.0))
        else:
            psystem.constraints.append(
                ("stick", i + 2, i + 3, psystem.dist(i + 2, i + 3)))
    for i in range(psystem.n):
        psystem.computeForces.append(("drag", i, 0.1))
    psystem.computeForces.append(("constant", 0, N.array(
        (1.0, 0.0, 0.0)), 1.0))
    psystem.computeForces.append(("constant", n - 1, N.array(
        (1.0, 0.0, 0.0)), -1.0))
    return psystem
Пример #2
0
def randomSystem(n, connect="stick"):
    global euler, collisions, screen
    w,h = screen.get_size()
    size = min(w,h)
    positions = N.random.random(3*n)*size/2.0 + size/3.0
    positions[2::3] = 0.0
    velocities = N.random.random(3*n)*10.0 - 5.0
    velocities[2::3] = 0.0
    masses = N.random.random(n)*10.0 + 5.0
    psystem = ParticleSystem(positions, velocities, masses)
    psystem.collisions = collisions
    psystem.euler = euler
    psystem.makePin(0)
    psystem.makePin(n-1)
    for i in range(0, psystem.n-3, 3):
        psystem.makeTriangle(i, i+1, i+2)
        if connect == "spring":
            psystem.computeForces.append(("spring", i+2, i+3, 1.0, 100.0))
        else:
            psystem.constraints.append(("stick", i+2, i+3,
                                          psystem.dist(i+2, i+3)))
    for i in range(psystem.n):
        psystem.computeForces.append(("drag", i, 0.1))
    psystem.computeForces.append(("constant", 0, N.array((1.0, 0.0, 0.0)), 1.0))
    psystem.computeForces.append(("constant", n-1, N.array((1.0, 0.0, 0.0)), -1.0))
    return psystem