Расчет расстояния между вагонами узлов VEINS

Я новичок в VEINS и пытаюсь реализовать взвешенное p-постоянство внутри MyVeinsApp.cc. Расстояние между отправляющим узлом и получателем используется в этой формуле. Я видел 2 функции ниже.

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

Должен ли я использовать один из этих методов для расчета расстояния между узлами?

Посоветуйте, пожалуйста, лучший подход.

0

Решение

Для расстояния вам, очевидно, нужны две позиции. Вы можете узнать позицию текущего узла, запросив модуль мобильности и позицию отправителя из полученного вами сообщения. Затем вы можете использовать следующий метод из Coord Для расчета расстояния между двумя точками:

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

Другие решения

Ищите модель потерь пути, реализованную вашим приложением. Это можно увидеть в типе Analog Model в вашем файле config.xml.
Например, по умолчанию, veins4.7.1 использует SimplePathLossModel. В описании поведения этой модели потери пути (файл .cc) вы можете видеть переменные

ReiverPos, SenderPos

И просто найдя расстояние между ними, можно получить расстояние между отправителем и получателем.

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

И если, как и я, вы предпочитаете теги отладки, вы можете увидеть это расстояние, напечатав его в отладке, используя:

splmEV << «Расстояние между отправителем и получателем составляет:» << yourDistance << епсИ;

Убедитесь, что вы определили splmEV.

0

По вопросам рекламы [email protected]