计算汽车节点VEINS之间的距离

时间:2017-03-09 05:15:16

标签: c++ simulation omnet++ veins sumo

我是VEINS的新手,并试图在MyVeinsApp.cc中实现加权p-persistence。在该公式中使用发送节点和接收之间的距离。我看到了下面的两个函数。

virtual Coord& getSenderPos();
virtual const Coord& getSenderPos() const {return const_cast<WaveShortMessage*>(this)->getSenderPos();}

我应该使用其中一种方法来计算节点之间的距离吗?

请告知最佳方法。

2 个答案:

答案 0 :(得分:5)

对于距离你显然需要两个位置。您可以通过从收到的消息中询问移动模块和发件人的位置来获取当前节点的位置。然后,您可以使用Coord中的以下方法计算两点之间的距离:

/**
 * @brief Returns the distance to Coord 'a'.
 */
double distance(const Coord& a) const {
    Coord dist(*this - a);
    return dist.length();
}

答案 1 :(得分:0)

寻找由您的应用程序实现的路径损耗模型。这可以在config.xml文件中的“模拟模型”类型中看到。 例如,默认情况下,静脉4.7.1使用SimplePathLossModel。在此路径损耗模型(.cc文件)的行为描述中,您可以看到变量

  

reveiverPos,sendererPos

仅通过查找它们之间的长度,就可以确定发送者和接收者之间的距离。

  

double yourDistance =(receiverPos-sendersPos).length();

如果像我一样,您喜欢使用调试标签,则可以通过在调试中使用以下命令打印此距离来查看此距离:

  

splmEV <<“发送方和接收方之间的距离是:” << yourDistance << endl;

确保定义splmEV。