示例#1
0
 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;
 }
示例#2
0
 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));
 }