fix problem at the source
This commit is contained in:
parent
1b51163b1d
commit
67ce19cb14
@ -139,14 +139,14 @@ inline std::vector<RouteStep> assembleSteps(const datafacade::BaseDataFacade &fa
|
|||||||
intersection.out = bearing_class.findMatchingBearing(bearings.second);
|
intersection.out = bearing_class.findMatchingBearing(bearings.second);
|
||||||
intersection.location = facade.GetCoordinateOfNode(path_point.turn_via_node);
|
intersection.location = facade.GetCoordinateOfNode(path_point.turn_via_node);
|
||||||
intersection.bearings.clear();
|
intersection.bearings.clear();
|
||||||
intersection.bearings.reserve(bearing_class.getAvailableBearings().size());
|
intersection.bearings.reserve(bearing_data.size());
|
||||||
intersection.lanes = path_point.lane_data.first;
|
intersection.lanes = path_point.lane_data.first;
|
||||||
intersection.lane_description =
|
intersection.lane_description =
|
||||||
path_point.lane_data.second != INVALID_LANE_DESCRIPTIONID
|
path_point.lane_data.second != INVALID_LANE_DESCRIPTIONID
|
||||||
? facade.GetTurnDescription(path_point.lane_data.second)
|
? facade.GetTurnDescription(path_point.lane_data.second)
|
||||||
: extractor::guidance::TurnLaneDescription();
|
: extractor::guidance::TurnLaneDescription();
|
||||||
std::copy(bearing_class.getAvailableBearings().begin(),
|
std::copy(bearing_data.begin(),
|
||||||
bearing_class.getAvailableBearings().end(),
|
bearing_data.end(),
|
||||||
std::back_inserter(intersection.bearings));
|
std::back_inserter(intersection.bearings));
|
||||||
intersection.entry.clear();
|
intersection.entry.clear();
|
||||||
for (auto idx : util::irange<std::size_t>(0, intersection.bearings.size()))
|
for (auto idx : util::irange<std::size_t>(0, intersection.bearings.size()))
|
||||||
|
@ -211,7 +211,7 @@ util::json::Object makeIntersection(const guidance::Intersection &intersection)
|
|||||||
intersection.bearings.begin(),
|
intersection.bearings.begin(),
|
||||||
intersection.bearings.end(),
|
intersection.bearings.end(),
|
||||||
std::back_inserter(bearings.values),
|
std::back_inserter(bearings.values),
|
||||||
[](const double bearing) -> util::json::Value { return std::fmod(bearing, 360); });
|
[](const double bearing) -> util::json::Value { BOOST_ASSERT(bearing != 360.0); return std::fmod(bearing, 360); });
|
||||||
|
|
||||||
entry.values.reserve(intersection.entry.size());
|
entry.values.reserve(intersection.entry.size());
|
||||||
std::transform(intersection.entry.begin(),
|
std::transform(intersection.entry.begin(),
|
||||||
|
@ -56,7 +56,7 @@ DiscreteBearing BearingClass::getDiscreteBearing(const double bearing)
|
|||||||
{
|
{
|
||||||
BOOST_ASSERT(0. <= bearing && bearing <= 360.);
|
BOOST_ASSERT(0. <= bearing && bearing <= 360.);
|
||||||
auto shifted_bearing = (bearing + 0.5 * discrete_step_size);
|
auto shifted_bearing = (bearing + 0.5 * discrete_step_size);
|
||||||
if (shifted_bearing > 360.)
|
if (shifted_bearing >= 360.)
|
||||||
shifted_bearing -= 360;
|
shifted_bearing -= 360;
|
||||||
return static_cast<DiscreteBearing>(shifted_bearing / discrete_step_size);
|
return static_cast<DiscreteBearing>(shifted_bearing / discrete_step_size);
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ constexpr double bearing_scale = 360.0 / 256.0;
|
|||||||
// discretizes a bearing into distinct units of 1.4 degrees
|
// discretizes a bearing into distinct units of 1.4 degrees
|
||||||
TurnBearing::TurnBearing(const double value) : bearing(value / bearing_scale)
|
TurnBearing::TurnBearing(const double value) : bearing(value / bearing_scale)
|
||||||
{
|
{
|
||||||
BOOST_ASSERT_MSG(value >= 0 && value <= 360.0, "Bearing value needs to be between 0 and 360");
|
BOOST_ASSERT_MSG(value >= 0 && value < 360.0, "Bearing value needs to be between 0 and 360 (exclusive)");
|
||||||
}
|
}
|
||||||
|
|
||||||
double TurnBearing::Get() const { return bearing * bearing_scale; }
|
double TurnBearing::Get() const { return bearing * bearing_scale; }
|
||||||
|
Loading…
Reference in New Issue
Block a user