def METHOD_NAME(self):
    # create containers for distances, angles and directions
    distances  = np.full( shape=(self.N,self.N), fill_value=np.inf, dtype=float)
    angles     = np.full( shape=(self.N,self.N), fill_value=np.inf, dtype=float)
    directions = np.zeros(shape=(self.N,self.N,3), dtype=float)
    # boolean indicating if two fish are touching
    terminal = False
    # iterate over grid and compute angle / distance matrix
    for i in np.arange(self.N):
        for j in np.arange(self.N):
            if i != j:
                # direction vector and current direction
                u = self.fishes[j].location - self.fishes[i].location
                v = self.fishes[i].curDirection
                # set distance
                distances[i,j] = np.linalg.norm(u)
                # set direction
                directions[i,j,:] = u
                # set angle
                cosAngle = np.dot(u,v)/(np.linalg.norm(u)*np.linalg.norm(v))
                angles[i,j] = np.arccos(cosAngle)
        # Termination state in case distance matrix has entries < cutoff
        if (distances[i,:] < self.fishes[i].sigmaPotential ).any():
            terminal = True
    self.distancesMat = distances
    self.anglesMat    = angles
    self.directionMat = directions
    return terminal