Optimizations

This commit is contained in:
arnekeller 2019-04-13 12:51:42 +02:00
parent 2719ae448b
commit 8f65ece32c

View File

@ -258,7 +258,7 @@ lazy_static! {
// R*-Baum zur Beschleunigung der Routenabschnitt-Hindernis-Überprüfungen // R*-Baum zur Beschleunigung der Routenabschnitt-Hindernis-Überprüfungen
static ref RTREE: RwLock<RTree<Polygon>> = RwLock::new(RTree::new()); static ref RTREE: RwLock<RTree<Polygon>> = RwLock::new(RTree::new());
// Cache für die Funktion none_intersect // Cache für die Funktion none_intersect
static ref COLLISIONS: RwLock<HashMap<[i32; 4], bool>> = RwLock::new(HashMap::new()); static ref COLLISIONS: RwLock<HashMap<[u32; 4], bool>> = RwLock::new(HashMap::new());
} }
/// Schneidet die Linie keines der Polygone? /// Schneidet die Linie keines der Polygone?
@ -272,10 +272,10 @@ fn none_intersect(mut line: Line) -> bool {
let mut collisions = COLLISIONS.write(); let mut collisions = COLLISIONS.write();
// Liniendaten hashbar machen // Liniendaten hashbar machen
let id = [ let id = [
line.start.x as i32, line.start.x.to_bits(),
line.start.y as i32, line.start.y.to_bits(),
line.end.x as i32, line.end.x.to_bits(),
line.end.y as i32, line.end.y.to_bits(),
]; ];
// evtl. gefundenes Ergebnis sofort zurückgeben // evtl. gefundenes Ergebnis sofort zurückgeben
if let Some(&r) = collisions.get(&id) { if let Some(&r) = collisions.get(&id) {