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)
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()
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))