| 1329 | void RoutingManager::DistanceAltitude::Simplify(double altitudeDeviation) |
| 1330 | { |
| 1331 | class IterT |
| 1332 | { |
| 1333 | DistanceAltitude const & m_da; |
| 1334 | size_t m_ind = 0; |
| 1335 | |
| 1336 | public: |
| 1337 | IterT(DistanceAltitude const & da, bool isBeg) : m_da(da) { m_ind = isBeg ? 0 : m_da.GetSize(); } |
| 1338 | |
| 1339 | IterT(IterT const & rhs) = default; |
| 1340 | IterT & operator=(IterT const & rhs) |
| 1341 | { |
| 1342 | m_ind = rhs.m_ind; |
| 1343 | return *this; |
| 1344 | } |
| 1345 | |
| 1346 | bool operator!=(IterT const & rhs) const { return m_ind != rhs.m_ind; } |
| 1347 | |
| 1348 | IterT & operator++() |
| 1349 | { |
| 1350 | ++m_ind; |
| 1351 | return *this; |
| 1352 | } |
| 1353 | IterT operator+(size_t inc) const |
| 1354 | { |
| 1355 | IterT res = *this; |
| 1356 | res.m_ind += inc; |
| 1357 | return res; |
| 1358 | } |
| 1359 | int64_t operator-(IterT const & rhs) const { return int64_t(m_ind) - int64_t(rhs.m_ind); } |
| 1360 | |
| 1361 | m2::PointD operator*() const { return {m_da.m_distances[m_ind], double(m_da.m_altitudes[m_ind])}; } |
| 1362 | }; |
| 1363 | |
| 1364 | std::vector<m2::PointD> out; |
| 1365 | |