1
- use std:: { cmp:: Reverse , collections:: { HashMap , HashSet } } ;
1
+ use std:: {
2
+ cmp:: Reverse ,
3
+ collections:: { HashMap , HashSet } ,
4
+ } ;
2
5
3
6
use geo:: { Coord , Distance , Euclidean , Intersects , Line , MultiPolygon } ;
4
7
use keyed_priority_queue:: { Entry , KeyedPriorityQueue } ;
@@ -20,7 +23,6 @@ pub struct PathPlanner {
20
23
21
24
const MULTIPLIER : f64 = 10.0 ;
22
25
23
-
24
26
impl PathPlanner {
25
27
pub fn new ( map : & ObstacleMap , start : ( f64 , f64 ) , goal : ( f64 , f64 ) ) -> Self {
26
28
let mut vertices = map. as_vertices ( ) ;
@@ -76,12 +78,15 @@ impl PathPlanner {
76
78
77
79
fn expand_node ( & mut self , vertex : usize ) {
78
80
let g_vertex = self
79
- . g_score
80
- . get ( & vertex)
81
- . unwrap_or ( & OrderedFloat ( std:: f64:: INFINITY ) )
82
- . clone ( ) ;
81
+ . g_score
82
+ . get ( & vertex)
83
+ . unwrap_or ( & OrderedFloat ( std:: f64:: INFINITY ) )
84
+ . clone ( ) ;
83
85
for successor in self . successors . iter ( ) . cloned ( ) {
84
- let multiplier = if self . obstacle . intersects ( & Line :: new ( self . vertices [ vertex] , self . vertices [ successor] ) ) {
86
+ let multiplier = if self
87
+ . obstacle
88
+ . intersects ( & Line :: new ( self . vertices [ vertex] , self . vertices [ successor] ) )
89
+ {
85
90
if self . goal == successor || self . start == vertex {
86
91
OrderedFloat ( MULTIPLIER )
87
92
} else {
@@ -90,7 +95,11 @@ impl PathPlanner {
90
95
} else {
91
96
OrderedFloat ( 1.0 )
92
97
} ;
93
- let g_successor = self . g_score . get ( & successor) . unwrap_or ( & OrderedFloat ( std:: f64:: INFINITY ) ) . clone ( ) ;
98
+ let g_successor = self
99
+ . g_score
100
+ . get ( & successor)
101
+ . unwrap_or ( & OrderedFloat ( std:: f64:: INFINITY ) )
102
+ . clone ( ) ;
94
103
let g_tentative = g_vertex + multiplier * self . distance ( vertex, successor) ;
95
104
if g_tentative < g_successor {
96
105
self . from . insert ( successor, vertex) ;
@@ -99,10 +108,10 @@ impl PathPlanner {
99
108
match self . open . entry ( successor) {
100
109
Entry :: Occupied ( entry) => {
101
110
entry. set_priority ( new_f_score) ;
102
- } ,
111
+ }
103
112
Entry :: Vacant ( entry) => {
104
113
entry. set_priority ( new_f_score) ;
105
- } ,
114
+ }
106
115
}
107
116
}
108
117
}
0 commit comments