我该如何定义两辆汽车之间的距离越来越远?

时间:2019-09-17 08:23:43

标签: veins

我想确定两辆车相距较远。我在TraCIDemo11p类的handlepositionupdate方法中编写了代码,但是只有一半的代码可以正确运行。

   Coord senderPosition = mobility->getCurrentPosition();
   double direction1=mobility->getAngleRad();
  std::map<std::string, cModule*> availableCars = mobility->getManager()- 
  >getManagedHosts();


      std::map<std::string, cModule*>::iterator it;

 for(it = availableCars.begin(); it != availableCars.end(); it++)
   {



       TraCIMobility* mobility2 = TraCIMobilityAccess().get(it->second);

       double direction2=mobility2->getAngleRad();

      Coord receiverPosition = mobility2->getCurrentPosition();

         if(direction2!=direction1){

          std::cout<<"they move in opposite direction"<<endl;
         }
          double distance1=senderPosition.distance(receiverPosition);


          WaveShortMessage* wsm = new WaveShortMessage();
         scheduleAt(simTime()+1,wsm);
          cArray array("array1");
          int index = array.add(wsm);
          double distance2=senderPosition.distance(receiverPosition);

          if(distance2>distance1){
            std::cout<<"they are getting far away"<<endl;
             array.remove(index);
             array.addAt(index, bsm);

}


   }


}

当我运行它时,它只是呈现出它们沿相反方向移动,而其余的则没有呈现。 因此,我希望我的代码确定哪些车辆正在远离。我的问题出在哪里? 非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我知道我的错误在哪里。 我同时计算distance1和distance2。但是我应该在不同的时间计算它们。 为此,我考虑使用getpositionAt()方法而不是getcurrentposition()方法。

simtime_t T=simTime()+60;
senderposition1=mobility->getpositionAt(T);
receiverposition1=mobility2->getpositionAt(T);
double distance2=senderposition1.Distance(receiverposition1);