def METHOD_NAME(self, last, ix, ixs, first):
    """
    last needs to be the index of the previous current point
    """
    if first == 1:
        last_norm = np.array([-1, 0], ndmin=2)
    elif first == 0:
        # normalized vector pointing towards previous point
        last_norm = self.norm(np.subtract(self.data_set[last, :], self.data_set[ix,:]))
    # normalized row vectors pointing to set of k nearest neibs
    ixs_norm = self.norm_array(np.subtract(self.data_set[ixs, :], self.data_set[ix,:]))
    ang = np.zeros((ixs.shape[0], 1))
    for j in range(ixs.shape[0]):
        theta = np.arccos(np.dot(last_norm, ixs_norm[j, :]))
        # ang[j,0] = theta
        z_comp = np.cross(last_norm, ixs_norm[j, :])
        # ang[j,2] = z
        if z_comp <= 0:
            ang[j, 0] = theta
        elif z_comp > 0:
            ang[j, 0] = 2 * np.pi - theta
    return np.squeeze(ang)