void IndexGraphStarter::GetFakeToNormalEdge(FakeVertex const & fakeVertex, bool forward, vector<SegmentEdge> & edges) { Segment const segment(fakeVertex.GetFeatureId(), fakeVertex.GetSegmentIdx(), forward); RoadPoint const & roadPoint = segment.GetRoadPoint(true /* front */); m2::PointD const & pointTo = m_graph.GetGeometry().GetPoint(roadPoint); double const weight = m_graph.GetEstimator().CalcHeuristic(fakeVertex.GetPoint(), pointTo); edges.emplace_back(segment, weight); }
void IndexGraphStarter::GetNormalToFakeEdge(Segment const & segment, FakeVertex const & fakeVertex, Segment const & fakeSegment, bool isOutgoing, vector<SegmentEdge> & edges) { if (!fakeVertex.Fits(segment)) return; m2::PointD const & pointFrom = m_graph.GetGeometry().GetPoint(segment.GetRoadPoint(isOutgoing)); double const weight = m_graph.GetEstimator().CalcHeuristic(pointFrom, fakeVertex.GetPoint()); edges.emplace_back(fakeSegment, weight); }
void IndexGraph::GetEdgeList(Segment const & segment, bool isOutgoing, vector<SegmentEdge> & edges) { RoadPoint const roadPoint = segment.GetRoadPoint(isOutgoing); Joint::Id const jointId = m_roadIndex.GetJointId(roadPoint); if (jointId != Joint::kInvalidId) { m_jointIndex.ForEachPoint(jointId, [&](RoadPoint const & rp) { GetNeighboringEdges(segment, rp, isOutgoing, edges); }); } else { GetNeighboringEdges(segment, roadPoint, isOutgoing, edges); } }