Skip to content

Commit

Permalink
Don't compute new modifier for merge instructions in collapsing
Browse files Browse the repository at this point in the history
  • Loading branch information
oxidase committed Nov 8, 2017
1 parent ac7881c commit 5822cbd
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 7 deletions.
7 changes: 5 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
# UNRELEASED

- Profile:
- Remove dependency on turn types and turn modifier in the process_turn function in the `car.lua` profile. Guidance instruction types are not used to influence turn penalty anymore so this will break backward compatibility between profile version 3 and 4.
- Changes from 5.13:
- Profile:
- Remove dependency on turn types and turn modifier in the process_turn function in the `car.lua` profile. Guidance instruction types are not used to influence turn penalty anymore so this will break backward compatibility between profile version 3 and 4.
- Bugfixes:
- Fixed #4670: Fix bug where merge instructions got the wrong direction modifier

# 5.13.0
- Changes from 5.12:
Expand Down
4 changes: 2 additions & 2 deletions features/guidance/merge.feature
Original file line number Diff line number Diff line change
Expand Up @@ -145,5 +145,5 @@ Feature: Merging
| cf | | 1B | motorway_link | yes |

When I route I should get
| waypoints | route | turns |
| e,d | ,A100,A100 | depart,merge straight,arrive |
| waypoints | route | turns |
| e,d | ,A100,A100 | depart,merge slight left,arrive |
8 changes: 5 additions & 3 deletions src/engine/guidance/collapse_turns.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -186,16 +186,18 @@ void AdjustToCombinedTurnStrategy::operator()(RouteStep &step_at_turn_location,
{
const auto angle = findTotalTurnAngle(step_at_turn_location, transfer_from_step);

// Forks point to left/right. By doing a combined angle, we would risk ending up with
// unreasonable fork instrucitons. The direction of a fork only depends on the forking location,
// Forks and merges point to left/right. By doing a combined angle, we would risk ending up with
// unreasonable fork instrucitons. The direction of a fork or a merge only depends on the
// location,
// not further angles coming up
//
// d
// . c
// a - b
//
// could end up as `fork left` for `a-b-c`, instead of fork-right
const auto new_modifier = hasTurnType(step_at_turn_location, TurnType::Fork)
const auto new_modifier = hasTurnType(step_at_turn_location, TurnType::Fork) ||
hasTurnType(step_at_turn_location, TurnType::Merge)
? step_at_turn_location.maneuver.instruction.direction_modifier
: getTurnDirection(angle);

Expand Down

0 comments on commit 5822cbd

Please sign in to comment.