85 "Wraparound does not support " <<
m_numRings <<
" rings");
97 std::vector<Vector3D> sitePositions = {
126 wraparoundModel->SetSiteDistance(1000);
127 wraparoundModel->SetNumSites(numSites);
128 auto sitePositionsSlice =
129 std::vector<Vector3D>(sitePositions.begin(), sitePositions.begin() + numSites);
130 wraparoundModel->SetSitePositions(sitePositionsSlice);
134 mobilityHelper.
Install(userNodes);
135 mobilityHelper.
Install(siteNodes);
138 for (
auto i = 0; i < numSites; i++)
144 wraparoundModel->AddSitePosition(sitePositions.at(i));
153 std::vector<std::tuple<size_t, size_t, Vector3D, Vector3D>> testPoint;
172 testPoint.emplace_back( 9, 1,
Vector3D( 1000, 0, 0),
Vector3D( 1000, 0, 0));
173 testPoint.emplace_back(10, 2,
Vector3D( 1000, 1000, 0),
Vector3D( 1000, 1000, 0));
174 testPoint.emplace_back(11, 0,
Vector3D( -500, 0, 0),
Vector3D( -500, 0, 0));
175 testPoint.emplace_back(12, 0,
Vector3D( 0, -500, 0),
Vector3D( 0, -500, 0));
176 testPoint.emplace_back(13, 5,
Vector3D(-1000, -1000, 0),
Vector3D(-1000, -1000, 0));
177 testPoint.emplace_back(14, 13,
Vector3D( 2000, -1000, 0),
Vector3D(-2330, -1500, 0));
178 testPoint.emplace_back(15, 16,
Vector3D(-1000, 2000, 0),
Vector3D( 1598, -1500, 0));
179 testPoint.emplace_back(16, 15,
Vector3D( 2000, 2000, 0),
Vector3D( 267, -2000, 0));
180 testPoint.emplace_back(17, 10,
Vector3D(-2000, -2000, 0),
Vector3D( -268, 2000, 0));
181 testPoint.emplace_back(18, 11,
Vector3D(-2000, 1500, 0),
Vector3D(-2000, 1500, 0));
191 testPoint.emplace_back(2, 3,
Vector3D( 1000, -500, 0),
Vector3D( -732, 1500, 0));
192 testPoint.emplace_back(3, 4,
Vector3D( 1000, 500, 0),
Vector3D(-1598, 0, 0));
194 testPoint.emplace_back(5, 6,
Vector3D(-1000, 500, 0),
Vector3D( 732, -1500, 0));
195 testPoint.emplace_back(6, 1,
Vector3D(-1000, -500, 0),
Vector3D( 1598, 0, 0));
199 testPoint.emplace_back(0, 0,
Vector3D( 1000, 1000, 0),
Vector3D( 1000, 1000, 0));
200 testPoint.emplace_back(0, 0,
Vector3D( 1000, -1000, 0),
Vector3D( 1000, -1000, 0));
201 testPoint.emplace_back(0, 0,
Vector3D(-1000, 1000, 0),
Vector3D(-1000, 1000, 0));
202 testPoint.emplace_back(0, 0,
Vector3D(-1000, -1000, 0),
Vector3D(-1000, -1000, 0));
203 testPoint.emplace_back(0, 0,
Vector3D( 2000, 2000, 0),
Vector3D( 2000, 2000, 0));
204 testPoint.emplace_back(0, 0,
Vector3D( 2000, -2000, 0),
Vector3D( 2000, -2000, 0));
205 testPoint.emplace_back(0, 0,
Vector3D(-2000, 2000, 0),
Vector3D(-2000, 2000, 0));
206 testPoint.emplace_back(0, 0,
Vector3D(-2000, -2000, 0),
Vector3D(-2000, -2000, 0));
212 for (
auto [siteNumber, expectedVirtualUserSite, realUserPos, expectedVirtualPos] : testPoint)
214 userMm->SetPosition(realUserPos);
217 wraparoundModel->GetVirtualPosition(userMm->GetPosition(), siteMm->GetPosition());
218 auto nearestSiteToVirtualUser =
GetNearestSite(sitePositions, numSites, virtualPos);
220 expectedVirtualUserSite,
221 "Virtual position leads to from real site "
223 <<
" to incorrect site " << nearestSiteToVirtualUser);
226 "Expected " << expectedVirtualPos <<
" and obtained "
227 << virtualPos <<
" virtual positions differ");