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,17 +156,20 @@ 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]);
 | 
				
			||||||
 | 
					        if(packedPath[0] != packedPath[1])
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
            for(deque<NodeID>::size_type i = 0; i < packedPath.size()-1; i++)
 | 
					            for(deque<NodeID>::size_type i = 0; i < packedPath.size()-1; i++)
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                _UnpackEdge(packedPath[i], packedPath[i+1], path);
 | 
					                _UnpackEdge(packedPath[i], packedPath[i+1], path);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        packedPath.clear();
 | 
					        packedPath.clear();
 | 
				
			||||||
        delete _forwardHeap;
 | 
					        delete _forwardHeap;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user