vRp.CD2g_test/utils/geometry/astar/path.go

27 lines
574 B
Go

package astar
import "github.com/kercylan98/minotaur/utils/generic"
type path[Node comparable, V generic.SignedNumber] []Node
// 获取末位元素
func (p path[Node, V]) last() Node {
return p[len(p)-1]
}
// 将 n 追加到末位,返回新的路径,不影响原始路径
func (p path[Node, V]) cont(n Node) path[Node, V] {
cp := make([]Node, len(p), len(p)+1)
copy(cp, p)
cp = append(cp, n)
return cp
}
// cost 计算路径总消耗
func (p path[Node, V]) cost(d func(a, b Node) V) (c V) {
for i := 1; i < len(p); i++ {
c += d(p[i-1], p[i])
}
return c
}