51 lines
1.2 KiB
C++
51 lines
1.2 KiB
C++
#ifndef EDGE_BASED_NODE_H
|
|
#define EDGE_BASED_NODE_H
|
|
|
|
#include "Coordinate.h"
|
|
|
|
struct EdgeBasedNode {
|
|
EdgeBasedNode() :
|
|
id(INT_MAX),
|
|
lat1(INT_MAX),
|
|
lat2(INT_MAX),
|
|
lon1(INT_MAX),
|
|
lon2(INT_MAX >> 1),
|
|
belongsToTinyComponent(false),
|
|
nameID(UINT_MAX),
|
|
weight(UINT_MAX >> 1),
|
|
ignoreInGrid(false)
|
|
{ }
|
|
|
|
bool operator<(const EdgeBasedNode & other) const {
|
|
return other.id < id;
|
|
}
|
|
|
|
bool operator==(const EdgeBasedNode & other) const {
|
|
return id == other.id;
|
|
}
|
|
|
|
inline FixedPointCoordinate Centroid() const {
|
|
FixedPointCoordinate centroid;
|
|
//The coordinates of the midpoint are given by:
|
|
//x = (x1 + x2) /2 and y = (y1 + y2) /2.
|
|
centroid.lon = (std::min(lon1, lon2) + std::max(lon1, lon2))/2;
|
|
centroid.lat = (std::min(lat1, lat2) + std::max(lat1, lat2))/2;
|
|
return centroid;
|
|
}
|
|
|
|
inline bool isIgnored() const {
|
|
return ignoreInGrid;
|
|
}
|
|
|
|
NodeID id;
|
|
int lat1;
|
|
int lat2;
|
|
int lon1;
|
|
int lon2:31;
|
|
bool belongsToTinyComponent:1;
|
|
NodeID nameID;
|
|
unsigned weight:31;
|
|
bool ignoreInGrid:1;
|
|
};
|
|
|
|
#endif //EDGE_BASED_NODE_H
|