コード例 #1
0
ファイル: mobile.py プロジェクト: drumbumLOLcatz/LandingZone
  def applyStep(self,step):
    v = self.getVelocity()
    v.set(0.0,0.0)
    #self.angularVelocity = 0.0
    for mobile in self.mobiles:
      vmobile = mobile.getVelocity().copy()
      v.add(vmobile)

      #vmobile = mobile.getVelocity()

      om = mobile.getPhysicalPosition().copy()
      om.sub(self.getPosition())
      #om.display()
      vmobile.mulScalar(mobile.getMass())
      if om.length() != 0.0 :
        av = Vector2d.vtangent(om,vmobile) / om.length()
        av = -av
      else :
       av = 0.0

      if om.getX() < 0.0:
        av = -av
      if vmobile.getY() > 0.0:
        av = -av
      #print "ANGULAR VELOCITY AV=%f OM=%f MASS=%f"%(av,om.length(),mobile.getMass())
      self.angularVelocity += av * 0.5

    v.mulScalar(step)
    self.getPosition().add(v)
    #print "ANGULAR VELOCITY=%f"%(self.angularVelocity)
    
    self.angle += self.angularVelocity * step*0.001   
    #self.angularVelocity = self.angularVelocity / 2.0
    self.updateMobiles()
 
    #print 'TOTO: %d %d'%(self.stablecount,self.stable)
    #print '%f - %f'%(self.angle,self.oldangle)
    #print '%d'%int(fabs(self.getPosition().getX()-self.oldposition.getX()))
    #print '%d - %f - %f'%(int(fabs(self.getPosition().getY()-self.oldposition.getY())),self.getPosition().getY(),self.oldposition.getY())
    if int(self.angle) == int(self.oldangle) and int(fabs(self.getPosition().getX()-self.oldposition.getX())) < 1 and int(fabs(self.getPosition().getY()-self.oldposition.getY())) < 1 :
      self.stablecount += 1
      if self.stablecount > 180:
        self.stable = 1
    else :
      self.stablecount = 0

    self.oldposition.set(self.getPosition().getX(),self.getPosition().getY())
    self.oldangle = self.angle