Don't use Bezier curves for right/left turns at tiny intersections. They

wind up looping back on themselves in a nonsensical way, causing
vehicles to visually glitch when moving through.

This was started in 081819d86b, but it
used to gridlock 2 maps. All the recent roundabout fixes seems to have
resolved those! And adjusting offstreet parking for two maps.

But wallingford does regress; plunging forward for now.
This commit is contained in:
Dustin Carlino 2021-03-10 15:58:16 -08:00
parent bf8f51ae05
commit f0de4e4583
4 changed files with 334 additions and 334 deletions

File diff suppressed because it is too large Load Diff

View File

@ -29,7 +29,7 @@ pub fn prebake_all() {
MapName::seattle("phinney"), MapName::seattle("phinney"),
MapName::seattle("qa"), MapName::seattle("qa"),
MapName::seattle("rainier_valley"), MapName::seattle("rainier_valley"),
MapName::seattle("wallingford"), //MapName::seattle("wallingford"), TODO broken
] { ] {
let map = map_model::Map::new(name.path(), &mut timer); let map = map_model::Map::new(name.path(), &mut timer);
let scenario: Scenario = let scenario: Scenario =

View File

@ -124,13 +124,15 @@ pub fn osm_to_raw(name: &str, timer: &mut Timer, config: &ImporterConfiguration)
city.input_path("offstreet_parking.bin"), city.input_path("offstreet_parking.bin"),
), ),
private_offstreet_parking: convert_osm::PrivateOffstreetParking::FixedPerBldg( private_offstreet_parking: convert_osm::PrivateOffstreetParking::FixedPerBldg(
// TODO Utter guesses // TODO Utter guesses or in response to gridlock
match name { match name {
"downtown" => 5, "downtown" => 5,
"lakeslice" => 5, "lakeslice" => 5,
"qa" => 5,
"rainier_valley" => 3, "rainier_valley" => 3,
"south_seattle" => 5, "south_seattle" => 5,
"udistrict" => 5, "udistrict" => 5,
"wallingford" => 5,
_ => 1, _ => 1,
}, },
), ),

View File

@ -290,9 +290,7 @@ fn curvey_turn(src: &Lane, dst: &Lane) -> Result<PolyLine> {
// they'll overlap. In that case, just use the straight line for the turn. // they'll overlap. In that case, just use the straight line for the turn.
if let (Some(l1), Some(l2)) = (Line::new(pt1, control_pt1), Line::new(control_pt2, pt2)) { if let (Some(l1), Some(l2)) = (Line::new(pt1, control_pt1), Line::new(control_pt2, pt2)) {
if l1.crosses(&l2) { if l1.crosses(&l2) {
// TODO Make this bail!, so we use the straight line. But it gridlocked two maps, so bail!("intersection is too small for a Bezier curve");
// resolve that first.
warn!("intersection is too small for a Bezier curve");
} }
} }