Documentation ¶
Index ¶
- Constants
- func GridFromString(str string) (grid *Grid, startNode, endNode *GridNode)
- type DebugTrace
- type DiagonalMovement
- type Grid
- func (grid *Grid) Clone() *Grid
- func (grid *Grid) JPFAlwaysMoveDiagonallyFind(node *GridNodeInfo) (neighbors []*GridNode)
- func (grid *Grid) JPFAlwaysMoveDiagonallyJump(x, y, px, py int, endNode *GridNode) (jumpPoint *GridNode)
- func (grid *Grid) JPFMoveDiagonallyIfAtMostOneObstacleFind(node *GridNodeInfo) (neighbors []*GridNode)
- func (grid *Grid) JPFMoveDiagonallyIfAtMostOneObstacleJump(x, y, px, py int, endNode *GridNode) (jumpPoint *GridNode)
- func (grid *Grid) JPFMoveDiagonallyIfNoObstaclesFind(node *GridNodeInfo) (neighbors []*GridNode)
- func (grid *Grid) JPFMoveDiagonallyIfNoObstaclesJump(x, y, px, py int, endNode *GridNode) (jumpPoint *GridNode)
- func (grid *Grid) PathFindingAStar(startX, startY, endX, endY int) (res []*PathPoint)
- func (grid *Grid) PathFindingBestFirst(startX, startY, endX, endY int) (res []*PathPoint)
- func (grid *Grid) PathFindingBiAStar(startX, startY, endX, endY int) (res []*PathPoint)
- func (grid *Grid) PathFindingBiBestFirst(startX, startY, endX, endY int) (res []*PathPoint)
- func (grid *Grid) PathFindingBiBreadthFirst(startX, startY, endX, endY int) (res []*PathPoint)
- func (grid *Grid) PathFindingBiDijkstra(startX, startY, endX, endY int) (res []*PathPoint)
- func (grid *Grid) PathFindingBreadthFirst(startX, startY, endX, endY int) (res []*PathPoint)
- func (grid *Grid) PathFindingDijkstra(startX, startY, endX, endY int) (res []*PathPoint)
- func (grid *Grid) PathFindingIdaStar(startX, startY, endX, endY int) (res []*PathPoint)
- func (grid *Grid) PathFindingJumpPoint(startX, startY, endX, endY int) (res []*PathPoint)
- func (grid *Grid) PathFindingPrint(cmd PathFindingType, startX, startY, endX, endY int)
- func (grid *Grid) PathFindingRoute(cmd PathFindingType) (cmdFunc PathFindingCmd)
- func (grid *Grid) PrintMap()
- func (grid *Grid) SetWalkableAt(X int, Y int, Walkable bool)
- func (grid *Grid) TraceJumpPointPath(node *GridNode) bool
- func (grid *Grid) TracePath(node *GridNode) bool
- type GridNode
- type GridNodeInfo
- type Heuristic
- type PathFindingCmd
- type PathFindingConfig
- type PathFindingConfigOptions
- func WithAllowDiagonal(allowDiagonal bool) PathFindingConfigOptions
- func WithDebugTrace(trace DebugTrace) PathFindingConfigOptions
- func WithDiagonalMovement(DiagonalMovement DiagonalMovement) PathFindingConfigOptions
- func WithDontCrossCorners(DontCrossCorners bool) PathFindingConfigOptions
- func WithHeuristic(Heuristic Heuristic) PathFindingConfigOptions
- func WithWeight(weight float64) PathFindingConfigOptions
- type PathFindingType
- type PathPoint
- type TracePoint
Constants ¶
View Source
const ( DescAStar = "AStar" DescIdaStar = "Ida star" DescBreadthFirstSearch = "Breadth First Search" DescBestFirstSearch = "Best First Search" DescDijkstra = "Dijkstra" DescJumpPointSearch = "Jump Point Search" DescOrthogonalJumpPoint = "Orthogonal Jump Point" )
View Source
const ( DescHeuristicManhattan = "Manhattan " DescHeuristicEuclidean = "Euclidean " DescHeuristicOctile = "Octile" DescHeuristicChebyshev = "Chebyshev" )
Variables ¶
This section is empty.
Functions ¶
func GridFromString ¶
Types ¶
type DebugTrace ¶
type DebugTrace interface { SetPathHandle(fn func(v *TracePoint)) TracePath(x, y int, isJumpPoint bool) bool Wait() Exit() Start() Pause() }
func NewDebugTrace ¶
func NewDebugTrace() DebugTrace
type DiagonalMovement ¶
type DiagonalMovement int
const ( DiagonalMovementNone DiagonalMovement = 0 DiagonalMovementAlways DiagonalMovement = 1 DiagonalMovementNever DiagonalMovement = 2 DiagonalMovementIfAtMostOneObstacle DiagonalMovement = 3 DiagonalMovementOnlyWhenNoObstacles DiagonalMovement = 4 )
type Grid ¶
type Grid struct { Width int Height int Nodes map[int64]*GridNode //key :x|y,value:node Config *PathFindingConfig }
地图
func NewGridWithConfig ¶
func NewGridWithConfig(Width int, Height int, cfg *PathFindingConfig) *Grid
func (*Grid) JPFAlwaysMoveDiagonallyFind ¶
func (grid *Grid) JPFAlwaysMoveDiagonallyFind(node *GridNodeInfo) (neighbors []*GridNode)
func (*Grid) JPFAlwaysMoveDiagonallyJump ¶
func (*Grid) JPFMoveDiagonallyIfAtMostOneObstacleFind ¶
func (grid *Grid) JPFMoveDiagonallyIfAtMostOneObstacleFind(node *GridNodeInfo) (neighbors []*GridNode)
func (*Grid) JPFMoveDiagonallyIfAtMostOneObstacleJump ¶
func (*Grid) JPFMoveDiagonallyIfNoObstaclesFind ¶
func (grid *Grid) JPFMoveDiagonallyIfNoObstaclesFind(node *GridNodeInfo) (neighbors []*GridNode)
func (*Grid) JPFMoveDiagonallyIfNoObstaclesJump ¶
func (*Grid) PathFindingAStar ¶
A*算法
func (*Grid) PathFindingBestFirst ¶
func (*Grid) PathFindingBiAStar ¶
func (*Grid) PathFindingBiBestFirst ¶
func (*Grid) PathFindingBiBreadthFirst ¶
func (*Grid) PathFindingBiDijkstra ¶
func (*Grid) PathFindingBreadthFirst ¶
func (*Grid) PathFindingDijkstra ¶
func (*Grid) PathFindingIdaStar ¶
func (*Grid) PathFindingJumpPoint ¶
func (*Grid) PathFindingPrint ¶
func (grid *Grid) PathFindingPrint(cmd PathFindingType, startX, startY, endX, endY int)
func (*Grid) PathFindingRoute ¶
func (grid *Grid) PathFindingRoute(cmd PathFindingType) (cmdFunc PathFindingCmd)
func (*Grid) TraceJumpPointPath ¶
type GridNode ¶
一个格子存储的对象
func (*GridNode) ToGridNodeInfo ¶
func (node *GridNode) ToGridNodeInfo() *GridNodeInfo
type GridNodeInfo ¶
type GridNodeInfo struct { *GridNode Parent *GridNodeInfo G float64 H float64 F float64 Open bool //是否第一次访问 // contains filtered or unexported fields }
一个格子存储的对象
func (*GridNodeInfo) ExpandPath ¶
func (info *GridNodeInfo) ExpandPath(paths []*PathPoint) (expanded []*PathPoint)
func (*GridNodeInfo) GetPaths ¶
func (info *GridNodeInfo) GetPaths() (res []*PathPoint)
type Heuristic ¶
func GetHeuristicByDesc ¶
type PathFindingCmd ¶
type PathFindingConfig ¶
type PathFindingConfig struct { BiDirectional bool //是否是双向 Weight float64 //权重 AllowDiagonal bool //允许对角线行走 DiagonalMovement DiagonalMovement //对角线行走规则 Heuristic Heuristic //估算函数 DontCrossCorners bool //是否跨越障碍物 IdAStarTimeLimit int64 //最大搜索秒数,超过这个值也视为没有找到 Trace DebugTrace }
func GetDefaultConfig ¶
func GetDefaultConfig() *PathFindingConfig
type PathFindingConfigOptions ¶
type PathFindingConfigOptions func(cfg *PathFindingConfig)
func WithAllowDiagonal ¶
func WithAllowDiagonal(allowDiagonal bool) PathFindingConfigOptions
func WithDebugTrace ¶
func WithDebugTrace(trace DebugTrace) PathFindingConfigOptions
func WithDiagonalMovement ¶
func WithDiagonalMovement(DiagonalMovement DiagonalMovement) PathFindingConfigOptions
func WithDontCrossCorners ¶
func WithDontCrossCorners(DontCrossCorners bool) PathFindingConfigOptions
func WithHeuristic ¶
func WithHeuristic(Heuristic Heuristic) PathFindingConfigOptions
func WithWeight ¶
func WithWeight(weight float64) PathFindingConfigOptions
type PathFindingType ¶
type PathFindingType string
const ( Undefined PathFindingType = "" AStar PathFindingType = "AStar" IdAStar PathFindingType = "IdAStar" Dijkstra PathFindingType = "Dijkstra" BestFirst PathFindingType = "BestFirst" BreadthFirst PathFindingType = "BreadthFirst" JumpPoint PathFindingType = "JumpPoint" BiAStar PathFindingType = "BiAStar" BiBestFirst PathFindingType = "BiBestFirst" BiBreadthFirst PathFindingType = "BiBreadthFirst" BiDijkstra PathFindingType = "BiDijkstra" )
func GetPathFindingType ¶
func GetPathFindingType(dest string, cfg *PathFindingConfig) PathFindingType
type TracePoint ¶
Source Files ¶
- a_star.go
- best_first.go
- bi_a_star.go
- bi_best_first.go
- bi_breadth_first.go
- bi_dijkstra.go
- breadth_first.go
- dijkstra.go
- grid.go
- grid_config.go
- heap.go
- heuristic.go
- id_a_star.go
- jpf_always_move_diagonally.go
- jpf_move_diagonally_If_at_most_one_obstacle.go
- jpf_move_diagonally_If_no_obstacles.go
- jpf_never_move_diagonally.go
- jump_point.go
- queue.go
- trace.go
Click to show internal directories.
Click to hide internal directories.