Class SquaredHeuristicStrategy
- All Implemented Interfaces:
IHeuristicStrategy
This implementation evaluates nodes using a weighted sum of squared distances:
- Squared Manhattan distance
- Squared Octile distance
- Squared perpendicular deviation from the start-target line
- Squared vertical height difference
By avoiding sqrt operations and working in squared space, this heuristic is
significantly faster than LinearHeuristicStrategy, while maintaining consistency and
admissibility if weights are tuned appropriately.
Ideal for high-performance pathfinding in large 3D environments.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondoublecalculate(HeuristicContext context) Calculates the heuristic value (estimated cost) from the current position to the target.doublecalculateTransitionCost(PathPosition from, PathPosition to) Calculates the actual transition cost between two adjacent positions.
-
Constructor Details
-
SquaredHeuristicStrategy
public SquaredHeuristicStrategy()
-
-
Method Details
-
calculate
Description copied from interface:IHeuristicStrategyCalculates the heuristic value (estimated cost) from the current position to the target.This method computes an estimate of the remaining cost to reach the target from the current position. The heuristic should be admissible (never overestimate the actual cost) to ensure optimal pathfinding results.
Common heuristic functions include:
- Manhattan distance for grid-based movement
- Euclidean distance for free movement
- Octile distance for diagonal movement
- Combined metrics considering elevation and terrain
- Specified by:
calculatein interfaceIHeuristicStrategy- Parameters:
context- the context containing information about the current position, target position, and other relevant pathfinding data- Returns:
- the estimated cost from the current position to the target, must be non-negative
- See Also:
-
calculateTransitionCost
Description copied from interface:IHeuristicStrategyCalculates the actual transition cost between two adjacent positions.This method determines the cost of moving from one position to another. The cost should reflect the actual difficulty or expense of the movement, taking into account factors such as:
- Distance between positions
- Terrain difficulty
- Elevation changes
- Movement penalties
The transition cost is used to calculate the G-cost (actual cost from start) in the A* algorithm.
- Specified by:
calculateTransitionCostin interfaceIHeuristicStrategy- Parameters:
from- the starting position of the movementto- the destination position of the movement- Returns:
- the cost of moving from the 'from' position to the 'to' position, must be positive for valid movements
- See Also:
-