mirror of https://codeberg.org/topola/topola.git
fix(router): attempt to fix autorouter
This commit is contained in:
parent
7a246be3a1
commit
d553fd6ba7
|
|
@ -10,12 +10,10 @@ use serde::{Deserialize, Serialize};
|
||||||
use crate::{
|
use crate::{
|
||||||
drawing::{
|
drawing::{
|
||||||
band::BandTermsegIndex,
|
band::BandTermsegIndex,
|
||||||
dot::{DotIndex, FixedDotIndex},
|
dot::FixedDotIndex,
|
||||||
graph::{MakePrimitive, PrimitiveIndex},
|
graph::{MakePrimitive, PrimitiveIndex},
|
||||||
head::GetFace,
|
|
||||||
primitive::MakePrimitiveShape,
|
primitive::MakePrimitiveShape,
|
||||||
rules::AccessRules,
|
rules::AccessRules,
|
||||||
Guide,
|
|
||||||
},
|
},
|
||||||
geometry::{
|
geometry::{
|
||||||
primitive::PrimitiveShape,
|
primitive::PrimitiveShape,
|
||||||
|
|
@ -62,21 +60,6 @@ impl<'a, R> RouterAstarStrategy<'a, R> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<R: AccessRules> RouterAstarStrategy<'_, R> {
|
|
||||||
fn bihead_length(&self) -> f64 {
|
|
||||||
self.navcord.head.ref_(self.layout.drawing()).length()
|
|
||||||
+ match self.navcord.head.face() {
|
|
||||||
DotIndex::Fixed(..) => 0.0,
|
|
||||||
DotIndex::Loose(face) => self
|
|
||||||
.layout
|
|
||||||
.drawing()
|
|
||||||
.rear_head(face)
|
|
||||||
.ref_(self.layout.drawing())
|
|
||||||
.length(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<R: AccessRules> AstarStrategy<Navmesh, f64, BandTermsegIndex> for RouterAstarStrategy<'_, R> {
|
impl<R: AccessRules> AstarStrategy<Navmesh, f64, BandTermsegIndex> for RouterAstarStrategy<'_, R> {
|
||||||
fn is_goal(
|
fn is_goal(
|
||||||
&mut self,
|
&mut self,
|
||||||
|
|
@ -98,9 +81,12 @@ impl<R: AccessRules> AstarStrategy<Navmesh, f64, BandTermsegIndex> for RouterAst
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
let prev_bihead_length = self.bihead_length();
|
let old_head = self.navcord.head;
|
||||||
|
let prev_head_length = old_head.ref_(self.layout.drawing()).length();
|
||||||
let result = self.navcord.step_to(self.layout, navmesh, edge.target());
|
let result = self.navcord.step_to(self.layout, navmesh, edge.target());
|
||||||
let probe_length = self.bihead_length() - prev_bihead_length;
|
let probe_length = self.navcord.head.ref_(self.layout.drawing()).length()
|
||||||
|
+ old_head.ref_(self.layout.drawing()).length()
|
||||||
|
- prev_head_length;
|
||||||
|
|
||||||
match result {
|
match result {
|
||||||
Ok(..) => Some(probe_length),
|
Ok(..) => Some(probe_length),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue