Beispiel #1
0
    simulator = PhysicsSimulator()

    #===========================================================================

    k0 = 3.5
    k1 = 0.5

    particle1 = Particle(mass=1.0)
    particle2 = Particle(mass=INFINITE)
    simulator.addBody(particle1)
    simulator.addBody(particle2)
    particle1_painter = PaintablePolyhedron(particle1.geometry)
    particle2_painter = PaintablePolyhedron(particle2.geometry)
    connector1_2_painter = PaintableConnector(particle1, particle2)
    main_window.addObject(particle1_painter)
    main_window.addObject(particle2_painter)
    main_window.addObject(connector1_2_painter)
    particle1.setPosition(np.array([-1.0, 0.0, 5.0]))
    particle2.setPosition(np.array([-1.0, -1.0, 5.0]))
    simulator.addForceGenerator(SpringForceGenerator(particle1, particle2, 0.6, k0))
    simulator.addForceGenerator(SpringForceGenerator(particle1, particle2, 0.6, k1))

    equivalent_k = k0 + k1

    particle1 = Particle(mass=1.0)
    particle2 = Particle(mass=INFINITE)
    simulator.addBody(particle1)
    simulator.addBody(particle2)
    particle1_painter = PaintablePolyhedron(particle1.geometry)
    particle2_painter = PaintablePolyhedron(particle2.geometry)
Beispiel #2
0
from example_interactive_water_particles.water_particle import WaterParticle
from gui.input_listeners.game_like_input_listener import GameLikeInputListener
from gui.main_window import MainWindow
from gui.paintables.paintable_polyhedron import PaintablePolyhedron
from physics.force_generator.gravity_force_generator import GravityForceGenerator
from physics.physics_simulator import PhysicsSimulator


# Controls the number of simulated particles.
N_PARTICLES = 500


if __name__ == '__main__':
    main_window = MainWindow("Water Particles Example", 400, 400)
    main_window.setInputListener(GameLikeInputListener(main_window))

    simulator = PhysicsSimulator()
    for i in xrange(N_PARTICLES):
        # Add particle to simulator
        particle = WaterParticle()
        simulator.addForceGenerator(GravityForceGenerator(particle))
        simulator.addBody(particle)
        # Add particle to scene
        particle_painter = PaintablePolyhedron(particle.geometry)
        main_window.addObject(particle_painter)

    main_window.addBeforeDrawSceneCallback(simulator.update)
    main_window.mainLoop()
Beispiel #3
0
if __name__ == '__main__':
    main_window = MainWindow("Spring Example", 400, 400)
    main_window.setInputListener(GameLikeInputListener(main_window))

    simulator = PhysicsSimulator()

    particle1 = createParticle(0.1, np.array([0.6, 0.2, 0.6]))
    particle2 = createParticle(0.5, np.array([0.2, 0.6, 0.6]))
    particle3 = createParticle(0.2, np.array([0.8, 0.2, 0.2]))

    simulator.addBody(particle1)
    simulator.addBody(particle2)
    simulator.addBody(particle3)

    main_window.addObject(PaintablePolyhedron(particle1.geometry))
    main_window.addObject(PaintablePolyhedron(particle2.geometry))
    main_window.addObject(PaintablePolyhedron(particle3.geometry))
    main_window.addObject(PaintableConnector(particle1, particle2))
    main_window.addObject(PaintableConnector(particle2, particle3))
    main_window.addObject(PaintableConnector(particle1, particle3))

    # Re-position particles for simulation
    # Particle1 is the fix particle (Will not have gravity)
    particle1.setPosition(np.array([-0.5, 0.5, 7.5]))
    # Particle2 is the moving particle (Will have the gravity force changing it)
    particle2.setPosition(np.array([0.5, -0.5, 7.0]))
    particle3.setPosition(np.array([0.5, 0.5, 6.0]))

    # Finally, add forces
    simulator.addForceGenerator(SpringForceGenerator(particle1, particle2, 1.5, 5.0))