mirror of https://codeberg.org/topola/topola.git
router: restore calculation of probe length (was temp. hardcoded to 0.0)
This commit is contained in:
parent
3fe305b99a
commit
43d84dc29e
|
|
@ -220,21 +220,21 @@ impl<'a, CW: Copy, R: RulesTrait> Guide<'a, CW, R> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn cane_head(&self, dot: LooseDotIndex) -> CaneHead {
|
pub fn cane_head(&self, face: LooseDotIndex) -> CaneHead {
|
||||||
CaneHead {
|
CaneHead {
|
||||||
face: dot,
|
face,
|
||||||
cane: self.drawing.cane(dot),
|
cane: self.drawing.cane(face),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn rear_head(&self, dot: LooseDotIndex) -> Head {
|
pub fn rear_head(&self, face: LooseDotIndex) -> Head {
|
||||||
self.head(self.rear(self.cane_head(dot)))
|
self.head(self.rear(self.cane_head(face)))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn head(&self, dot: DotIndex) -> Head {
|
pub fn head(&self, face: DotIndex) -> Head {
|
||||||
match dot {
|
match face {
|
||||||
DotIndex::Fixed(fixed) => BareHead { dot: fixed }.into(),
|
DotIndex::Fixed(dot) => BareHead { dot }.into(),
|
||||||
DotIndex::Loose(loose) => self.cane_head(loose).into(),
|
DotIndex::Loose(dot) => self.cane_head(dot).into(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,12 +8,13 @@ use thiserror::Error;
|
||||||
use crate::{
|
use crate::{
|
||||||
drawing::{
|
drawing::{
|
||||||
band::BandFirstSegIndex,
|
band::BandFirstSegIndex,
|
||||||
dot::FixedDotIndex,
|
dot::{DotIndex, FixedDotIndex},
|
||||||
graph::{MakePrimitive, PrimitiveIndex},
|
graph::{MakePrimitive, PrimitiveIndex},
|
||||||
|
guide::{CaneHead, Head, HeadTrait},
|
||||||
primitive::MakePrimitiveShape,
|
primitive::MakePrimitiveShape,
|
||||||
rules::RulesTrait,
|
rules::RulesTrait,
|
||||||
},
|
},
|
||||||
geometry::shape::ShapeTrait,
|
geometry::{primitive::PrimitiveShapeTrait, shape::ShapeTrait},
|
||||||
graph::GetPetgraphIndex,
|
graph::GetPetgraphIndex,
|
||||||
layout::Layout,
|
layout::Layout,
|
||||||
router::{
|
router::{
|
||||||
|
|
@ -50,6 +51,37 @@ impl<'a, R: RulesTrait> RouterAstarStrategy<'a, R> {
|
||||||
target,
|
target,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn bihead_length(&self) -> f64 {
|
||||||
|
self.head_length(&self.trace.head)
|
||||||
|
+ match self.trace.head.face() {
|
||||||
|
DotIndex::Fixed(..) => 0.0,
|
||||||
|
DotIndex::Loose(face) => {
|
||||||
|
self.head_length(&self.tracer.layout.drawing().guide().rear_head(face))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn head_length(&self, head: &Head) -> f64 {
|
||||||
|
match head {
|
||||||
|
Head::Bare(..) => 0.0,
|
||||||
|
Head::Cane(cane_head) => {
|
||||||
|
self.tracer
|
||||||
|
.layout
|
||||||
|
.drawing()
|
||||||
|
.primitive(cane_head.cane.seg)
|
||||||
|
.shape()
|
||||||
|
.length()
|
||||||
|
+ self
|
||||||
|
.tracer
|
||||||
|
.layout
|
||||||
|
.drawing()
|
||||||
|
.primitive(cane_head.cane.bend)
|
||||||
|
.shape()
|
||||||
|
.length()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, R: RulesTrait> AstarStrategy<&UnGraph<NavvertexWeight, (), usize>, f64, BandFirstSegIndex>
|
impl<'a, R: RulesTrait> AstarStrategy<&UnGraph<NavvertexWeight, (), usize>, f64, BandFirstSegIndex>
|
||||||
|
|
@ -85,18 +117,18 @@ impl<'a, R: RulesTrait> AstarStrategy<&UnGraph<NavvertexWeight, (), usize>, f64,
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
let before_probe_length = 0.0; //self.tracer.layout.band_length(self.trace.head.face());
|
let prev_bihead_length = self.bihead_length();
|
||||||
|
|
||||||
let width = self.trace.width;
|
let width = self.trace.width;
|
||||||
let result = self
|
let result = self
|
||||||
.tracer
|
.tracer
|
||||||
.step(*graph, &mut self.trace, edge.target(), width);
|
.step(*graph, &mut self.trace, edge.target(), width);
|
||||||
|
|
||||||
let probe_length = 0.0; //self.tracer.layout.band_length(self.trace.head.face());
|
let probe_length = self.bihead_length() - prev_bihead_length;
|
||||||
|
|
||||||
if result.is_ok() {
|
if result.is_ok() {
|
||||||
self.tracer.undo_step(*graph, &mut self.trace);
|
self.tracer.undo_step(*graph, &mut self.trace);
|
||||||
Some(probe_length - before_probe_length)
|
Some(probe_length)
|
||||||
} else {
|
} else {
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue