mirror of https://codeberg.org/topola/topola.git
Route to goal immediately if a straight path exists at any vertex
This commit is contained in:
parent
73a831ba6d
commit
7d76051cbf
12
src/main.rs
12
src/main.rs
|
|
@ -23,7 +23,7 @@ mod rules;
|
|||
mod segbend;
|
||||
mod shape;
|
||||
|
||||
use graph::{Tag, TaggedIndex};
|
||||
use graph::{SegWeight, Tag, TaggedIndex};
|
||||
use layout::Layout;
|
||||
use mesh::{MeshEdgeReference, VertexIndex};
|
||||
use route::Route;
|
||||
|
|
@ -224,7 +224,7 @@ fn main() {
|
|||
})
|
||||
.unwrap();
|
||||
|
||||
let _barrier2_dot1 = router
|
||||
let barrier2_dot1 = router
|
||||
.layout
|
||||
.add_dot(DotWeight {
|
||||
net: 20,
|
||||
|
|
@ -234,7 +234,7 @@ fn main() {
|
|||
},
|
||||
})
|
||||
.unwrap();
|
||||
let _barrier2_dot2 = router
|
||||
let barrier2_dot2 = router
|
||||
.layout
|
||||
.add_dot(DotWeight {
|
||||
net: 20,
|
||||
|
|
@ -244,20 +244,20 @@ fn main() {
|
|||
},
|
||||
})
|
||||
.unwrap();
|
||||
/*let _ = router.layout.add_seg(
|
||||
let _ = router.layout.add_seg(
|
||||
barrier2_dot1,
|
||||
barrier2_dot2,
|
||||
SegWeight {
|
||||
net: 20,
|
||||
width: 16.0,
|
||||
},
|
||||
);*/
|
||||
);
|
||||
|
||||
/*let head = router.draw_start(dot5);
|
||||
let head = router.draw_around_dot(head, dot6, false, 5.0).unwrap();
|
||||
let _ = router.draw_finish(head, dot7, 5.0);*/
|
||||
|
||||
router.enroute(
|
||||
let _ = router.enroute(
|
||||
dot1_1,
|
||||
dot1_2,
|
||||
DebugRouteStrategy::new(DefaultRouteStrategy::new(), &mut event_pump, &mut canvas),
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ impl<'a, RS: RouteStrategy> AstarStrategy<&Mesh, u64> for RouterAstarStrategy<'a
|
|||
fn reroute(&mut self, vertex: VertexIndex, tracker: &PathTracker<&Mesh>) -> Option<u64> {
|
||||
let new_path = tracker.reconstruct_path_to(vertex);
|
||||
|
||||
if vertex == self.to {
|
||||
/*if vertex == self.to {
|
||||
self.route
|
||||
.rework_path(&mut self.trace, &new_path[..new_path.len() - 1], 5.0)
|
||||
.ok();
|
||||
|
|
@ -79,10 +79,16 @@ impl<'a, RS: RouteStrategy> AstarStrategy<&Mesh, u64> for RouterAstarStrategy<'a
|
|||
.finish(&mut self.trace, new_path[new_path.len() - 1], 5.0)
|
||||
.ok();
|
||||
None
|
||||
} else {
|
||||
} else {*/
|
||||
//}
|
||||
|
||||
self.route.rework_path(&mut self.trace, &new_path, 5.0).ok();
|
||||
Some(self.strategy.route_cost(&self.route, &new_path))
|
||||
|
||||
if self.route.finish(&mut self.trace, self.to, 5.0).is_ok() {
|
||||
return None;
|
||||
}
|
||||
|
||||
Some(self.strategy.route_cost(&self.route, &new_path))
|
||||
}
|
||||
|
||||
fn edge_cost(&mut self, edge: MeshEdgeReference) -> u64 {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,6 @@ use enum_as_inner::EnumAsInner;
|
|||
use geo::{point, polygon, EuclideanDistance, Intersects, Point, Polygon, Rotate};
|
||||
use rstar::{RTreeObject, AABB};
|
||||
|
||||
|
||||
use crate::math::{self, Circle};
|
||||
|
||||
#[derive(Debug, Clone, Copy, PartialEq)]
|
||||
|
|
@ -101,8 +100,8 @@ impl Shape {
|
|||
fn priority(&self) -> i64 {
|
||||
match self {
|
||||
Shape::Dot(..) => 3,
|
||||
Shape::Bend(..) => 2,
|
||||
Shape::Seg(..) => 1,
|
||||
Shape::Seg(..) => 2,
|
||||
Shape::Bend(..) => 1,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue