correctly unpacking the first segment
This commit is contained in:
@@ -174,5 +174,5 @@ void FixedPointCoordinate::convertInternalReversedCoordinateToString(
|
||||
}
|
||||
|
||||
void FixedPointCoordinate::Output(std::ostream & out) const {//, FixedPointCoordinate & c) {
|
||||
out << "(" << lat << "," << lon << ")";
|
||||
out << "(" << lat/COORDINATE_PRECISION << "," << lon/COORDINATE_PRECISION << ")";
|
||||
}
|
||||
|
||||
@@ -23,11 +23,12 @@ struct EdgeBasedNode {
|
||||
forward_offset(0),
|
||||
reverse_offset(0),
|
||||
fwd_segment_position( std::numeric_limits<unsigned short>::max() ),
|
||||
rev_segment_position( std::numeric_limits<unsigned short>::max() >> 1 ),
|
||||
belongsToTinyComponent(false)
|
||||
rev_segment_position( std::numeric_limits<unsigned short>::max() >> 2 ),
|
||||
belongsToTinyComponent(false),
|
||||
is_compressed(false)
|
||||
{ }
|
||||
|
||||
EdgeBasedNode(
|
||||
explicit EdgeBasedNode(
|
||||
NodeID forward_edge_based_node_id,
|
||||
NodeID reverse_edge_based_node_id,
|
||||
NodeID u,
|
||||
@@ -39,7 +40,8 @@ struct EdgeBasedNode {
|
||||
int reverse_offset,
|
||||
unsigned short fwd_segment_position,
|
||||
unsigned short rev_segment_position,
|
||||
bool belongsToTinyComponent
|
||||
bool belongsToTinyComponent,
|
||||
bool is_compressed
|
||||
) :
|
||||
forward_edge_based_node_id(forward_edge_based_node_id),
|
||||
reverse_edge_based_node_id(reverse_edge_based_node_id),
|
||||
@@ -52,10 +54,23 @@ struct EdgeBasedNode {
|
||||
reverse_offset(reverse_offset),
|
||||
fwd_segment_position(fwd_segment_position),
|
||||
rev_segment_position(rev_segment_position),
|
||||
belongsToTinyComponent(belongsToTinyComponent)
|
||||
{ }
|
||||
// Computes:
|
||||
// - the distance from the given query location to nearest point on this edge (and returns it)
|
||||
belongsToTinyComponent(belongsToTinyComponent),
|
||||
is_compressed(is_compressed)
|
||||
{
|
||||
BOOST_ASSERT(
|
||||
( forward_edge_based_node_id != SPECIAL_NODEID ) ||
|
||||
( reverse_edge_based_node_id != SPECIAL_NODEID )
|
||||
);
|
||||
// if( forward_edge_based_node_id == SPECIAL_NODEID ) {
|
||||
// using namespace std;
|
||||
// swap( forward_edge_based_node_id, reverse_edge_based_node_id );
|
||||
// swap( u, v );
|
||||
// swap( forward_weight, reverse_weight );
|
||||
// swap( forward_offset, reverse_offset );
|
||||
// swap( fwd_segment_position, rev_segment_position );
|
||||
// }
|
||||
}
|
||||
|
||||
inline static double ComputePerpendicularDistance(
|
||||
const FixedPointCoordinate & coord_a,
|
||||
const FixedPointCoordinate & coord_b,
|
||||
@@ -134,7 +149,7 @@ struct EdgeBasedNode {
|
||||
}
|
||||
|
||||
bool IsCompressed() {
|
||||
return (fwd_segment_position + rev_segment_position) != 0;
|
||||
return is_compressed;
|
||||
}
|
||||
|
||||
// Returns the midpoint of the underlying edge.
|
||||
@@ -152,7 +167,7 @@ struct EdgeBasedNode {
|
||||
int forward_offset;
|
||||
int reverse_offset;
|
||||
unsigned short fwd_segment_position;
|
||||
unsigned short rev_segment_position:15;
|
||||
unsigned short rev_segment_position:14; //TODO: not actually needed!
|
||||
bool belongsToTinyComponent:1;
|
||||
NodeID name_id;
|
||||
|
||||
|
||||
@@ -683,11 +683,11 @@ public:
|
||||
BOOST_ASSERT( 0. <= current_perpendicular_distance );
|
||||
|
||||
if(
|
||||
( current_perpendicular_distance < min_dist ) //&&
|
||||
// !DoubleEpsilonCompare(
|
||||
// current_perpendicular_distance,
|
||||
// min_dist
|
||||
// )
|
||||
( current_perpendicular_distance < min_dist ) &&
|
||||
!DoubleEpsilonCompare(
|
||||
current_perpendicular_distance,
|
||||
min_dist
|
||||
)
|
||||
) { //found a new minimum
|
||||
min_dist = current_perpendicular_distance;
|
||||
result_phantom_node.forward_node_id = current_edge.forward_edge_based_node_id;
|
||||
|
||||
Reference in New Issue
Block a user