0

我是 VEINS 的新手,并试图在 MyVeinsApp.cc 中实现加权 p 持久性。该公式中使用了发送节点和接收节点之间的距离。我看到了下面的2个功能。

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

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

请就最佳方法提出建议。

4

2 回答 2

6

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

/**
 * @brief Returns the distance to Coord 'a'.
 */
double distance(const Coord& a) const {
    Coord dist(*this - a);
    return dist.length();
}
于 2017-03-09T12:17:27.367 回答
0

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

reveiverPos, senderPos

并且只要找到它们之间的长度,就有可能得到发送者和接收者之间的距离。

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

如果,像我一样,你使用更喜欢调试标签,你可以通过在调试中打印它来查看这个距离:

splmEV << "发送者和接收者之间的距离是:" << yourDistance << endl;

确保定义 splmEV。

于 2018-10-24T13:21:20.740 回答