示例#1
0
 def applyGravity(self, ship, deltaTime):
     distance = tupleDistance(ship.getPos(),
                              vec3ToTuple(self.planet.getPos()))
     if distance > Game.GRAVITY_DISTANCE: return
     gravity = Game.GRAVITY / distance
     gravityVector = tupleNormalize(
         tupleSegment(ship.getPos(), vec3ToTuple(self.planet.getPos())))
     gravityVector = scaleTuple(gravityVector, gravity * deltaTime)
     ship.applyForce(gravityVector)
示例#2
0
def colHandler(ship, contact):
    pos = ship.getPos()

    elasticity = 2.5
    #mass1 = ship.getMass()
    #mass2 = collider.getMass()
    vel1 = ship.getVel()
    normal = tupleNormalize(tupleSegment(pos, contact))
    force = (scaleTuple(normal,
                        -elasticity * (1 / 2.) * dotProduct(vel1, normal)))

    ship.applyForce(force)
    ship.setPos(addTuples(ship.getPos(), scaleTuple(normal, -.1)))
    ship.getCollisions().remove(contact)
示例#3
0
 def applyGravity(self, ship, deltaTime):
   distance = tupleDistance(
     ship.getPos(),
     vec3ToTuple( self.planet.getPos() )
   )
   if distance > Game.GRAVITY_DISTANCE: return
   gravity = Game.GRAVITY/distance
   gravityVector = tupleNormalize(
     tupleSegment(
       ship.getPos(),
       vec3ToTuple( self.planet.getPos() )
     )
   )
   gravityVector = scaleTuple( gravityVector, gravity * deltaTime)
   ship.applyForce( gravityVector )
示例#4
0
 def testTupleNormalize(self):
   tuple = (3, 4)
   unitTuple = (3/5., 4/5.)
   self.failUnlessEqual( tupleNormalize( tuple ), unitTuple )
示例#5
0
 def testTupleNormalize(self):
     tuple = (3, 4)
     unitTuple = (3 / 5., 4 / 5.)
     self.failUnlessEqual(tupleNormalize(tuple), unitTuple)