protected function thrust(Force $thrust, Time $time) { /** @var Acceleration $acceleration */ $acceleration = PhysicsProvider::forceMassAccelCalcs($thrust, $this->getMass()); $additionalVelocity = $acceleration->multiplyBy($time); $this->getVelocity()->add($additionalVelocity); /** @var Momentum $momentum */ $momentum = $this->getMass()->multiplyBy($this->getVelocity()); $this->setMomentum($momentum); return $this; }
public function testNewtonsSecondLaw() { $unit = new UnitComposition(); $force = $unit->getUnitClass(UnitComposition::FORCE); $mass = $unit->getUnitClass(UnitComposition::MASS); $accel = $unit->getUnitClass(UnitComposition::ACCELERATION); $force->preConvertedAdd(1); $mass->preConvertedAdd(1); $accel->preConvertedAdd(1); $this->assertInstanceOf('Samsara\\Newton\\Units\\Mass', PhysicsProvider::forceMassAccelCalcs($force, $accel)); $this->assertInstanceOf('Samsara\\Newton\\Units\\Force', PhysicsProvider::forceMassAccelCalcs($mass, $accel)); $this->assertInstanceOf('Samsara\\Newton\\Units\\Acceleration', PhysicsProvider::forceMassAccelCalcs($force, $mass)); }