fix(router): attempt to fix autorouter

This commit is contained in:
Ellen Emilia Anna Zscheile 2025-05-17 13:21:33 +02:00
parent 7a246be3a1
commit d553fd6ba7
1 changed files with 6 additions and 20 deletions

View File

@ -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),