graph/simple: separate weighted and unweighted edge implementations

This commit is contained in:
kortschak
2017-08-22 15:53:09 +09:30
parent 7ba61f0ead
commit f739fbf133
27 changed files with 192 additions and 181 deletions

View File

@@ -218,11 +218,11 @@ func (g *Grid) EdgeBetween(u, v graph.Node) graph.Edge {
func (g *Grid) WeightedEdgeBetween(u, v graph.Node) graph.WeightedEdge {
if g.HasEdgeBetween(u, v) {
if !g.AllowDiagonal || g.UnitEdgeWeight {
return simple.Edge{F: u, T: v, W: 1}
return simple.WeightedEdge{F: u, T: v, W: 1}
}
ux, uy := g.XY(u)
vx, vy := g.XY(v)
return simple.Edge{F: u, T: v, W: math.Hypot(ux-vx, uy-vy)}
return simple.WeightedEdge{F: u, T: v, W: math.Hypot(ux-vx, uy-vy)}
}
return nil
}