getX() - $node2->getX()) + \abs($node1->getY() - $node2->getY()); } public static function euclidean(Node $node1, Node $node2) : float { $dx = \abs($node1->getX() - $node2->getX()); $dy = \abs($node1->getY() - $node2->getY()); return \sqrt($dx * $dx + $dy * $dy); } public static function octile(Node $node1, Node $node2) : float { $dx = \abs($node1->getX() - $node2->getX()); $dy = \abs($node1->getY() - $node2->getY()); return $dx < $dy ? (\sqrt(2) - 1) * $dx + $dy : (\sqrt(2) - 1) * $dy + $dx; } public static function chebyshev(Node $node1, Node $node2) : float { return \max( \abs($node1->getX() - $node2->getX()), \abs($node1->getY() - $node2->getY()) ); } }