-
-
Notifications
You must be signed in to change notification settings - Fork 990
/
fake_ending.hpp
53 lines (44 loc) · 1.44 KB
/
fake_ending.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#pragma once
#include "routing/latlon_with_altitude.hpp"
#include "routing/road_graph.hpp"
#include "routing/segment.hpp"
#include "geometry/latlon.hpp"
#include "geometry/point2d.hpp"
#include <vector>
namespace routing
{
class EdgeEstimator;
class IndexGraph;
class WorldGraph;
struct Projection final
{
Projection(Segment const & segment, bool isOneWay,
LatLonWithAltitude const & segmentFront,
LatLonWithAltitude const & segmentBack,
LatLonWithAltitude const & junction)
: m_segment(segment)
, m_isOneWay(isOneWay)
, m_segmentFront(segmentFront)
, m_segmentBack(segmentBack)
, m_junction(junction)
{
}
bool operator==(Projection const & other) const;
Segment m_segment;
bool m_isOneWay = false;
LatLonWithAltitude m_segmentFront;
LatLonWithAltitude m_segmentBack;
LatLonWithAltitude m_junction;
};
struct FakeEnding final
{
LatLonWithAltitude m_originJunction;
std::vector<Projection> m_projections;
};
FakeEnding MakeFakeEnding(std::vector<Segment> const & segments, m2::PointD const & point,
WorldGraph & graph);
FakeEnding MakeFakeEnding(Segment const & segment, m2::PointD const & point, IndexGraph & graph);
LatLonWithAltitude CalcProjectionToSegment(LatLonWithAltitude const & begin,
LatLonWithAltitude const & end,
m2::PointD const & point);
} // namespace routing