@staticmethod
def _hexagonal_metric_distance(x, y, x_centre, y_centre):
    """ Get the hexagonal metric distance of a point from the centre of            the hexagon

            Computes the max of the magnitude of the dot products with the            normal vectors for the hexagon sides. The normal vectors are            (1,0), (0,1) and (1,-1); we don't need to be careful with the            signs of the vectors because we're about to do abs() of them            anyway.

        :param x: The x-coordinate of the chip to get the distance for
        :type x: int
        :param y: The y-coordinate of the chip to get the distance for
        :type y: int
        :param x_centre:            The x-coordinate of the centre of the hexagon.  Note that this is            the theoretical centre, it might not be an actual chip
        :type x_centre: float
        :param y_centre:            The y-coordinate of the centre of the hexagon.  Note that this is            the theoretical centre, it might not be an actual chip
        :type y_centre: float
        :return: how far the chip is away from the centre of the hexagon
        :rtype: float
        """
    dx = x - x_centre
    dy = y - y_centre
    return max(abs(dx), abs(dy), abs(dx - dy))
