fixing last leg of output path
This commit is contained in:
parent
9c13a8a6dd
commit
be836dc950
@ -139,7 +139,11 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ( _upperbound == std::numeric_limits< unsigned int >::max() || onSameEdge )
|
if ( _upperbound == std::numeric_limits< unsigned int >::max() || onSameEdge )
|
||||||
|
{
|
||||||
|
delete _forwardHeap;
|
||||||
|
delete _backwardHeap;
|
||||||
return _upperbound;
|
return _upperbound;
|
||||||
|
}
|
||||||
|
|
||||||
NodeID pathNode = middle;
|
NodeID pathNode = middle;
|
||||||
deque< NodeID > packedPath;
|
deque< NodeID > packedPath;
|
||||||
@ -152,16 +156,19 @@ public:
|
|||||||
packedPath.push_back( middle );
|
packedPath.push_back( middle );
|
||||||
pathNode = middle;
|
pathNode = middle;
|
||||||
|
|
||||||
do {
|
while ( pathNode != phantomNodes->targetNode2 && pathNode != phantomNodes->targetNode1 ){
|
||||||
pathNode = _backwardHeap->GetData( pathNode ).parent;
|
pathNode = _backwardHeap->GetData( pathNode ).parent;
|
||||||
packedPath.push_back( pathNode );
|
packedPath.push_back( pathNode );
|
||||||
} while ( pathNode != phantomNodes->targetNode2 && pathNode != phantomNodes->targetNode1 ) ;
|
}
|
||||||
|
|
||||||
// push start node explicitely
|
// push start node explicitely
|
||||||
path->push_back(packedPath[0]);
|
path->push_back(packedPath[0]);
|
||||||
for(deque<NodeID>::size_type i = 0; i < packedPath.size()-1; i++)
|
if(packedPath[0] != packedPath[1])
|
||||||
{
|
{
|
||||||
_UnpackEdge(packedPath[i], packedPath[i+1], path);
|
for(deque<NodeID>::size_type i = 0; i < packedPath.size()-1; i++)
|
||||||
|
{
|
||||||
|
_UnpackEdge(packedPath[i], packedPath[i+1], path);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
packedPath.clear();
|
packedPath.clear();
|
||||||
|
Loading…
Reference in New Issue
Block a user