Returns three lists containing the indices of the points lying on one side of the plane, on the plane
        and on the other side of the plane. The dist_tolerance parameter controls the tolerance to which a point
        is considered to lie on the plane or not (distance to the plane)
        :param points: list of points
        :param dist_tolerance: tolerance to which a point is considered to lie on the plane
        or not (distance to the plane)
        :return: The lists of indices of the points on one side of the plane, on the plane and
        on the other side of the plane

def indices_separate(self, points, dist_tolerance):
        """
        Returns three lists containing the indices of the points lying on one side of the plane, on the plane
        and on the other side of the plane. The dist_tolerance parameter controls the tolerance to which a point
        is considered to lie on the plane or not (distance to the plane)
        :param points: list of points
        :param dist_tolerance: tolerance to which a point is considered to lie on the plane
        or not (distance to the plane)
        :return: The lists of indices of the points on one side of the plane, on the plane and
        on the other side of the plane
        """
        side1 = list()
        inplane = list()
        side2 = list()
        for ip, pp in enumerate(points):
            if self.is_in_plane(pp, dist_tolerance):
                inplane.append(ip)
            else:
                if np.dot(pp + self.vector_to_origin, self.normal_vector) < 0.0:
                    side1.append(ip)
                else:
                    side2.append(ip)
        return [side1, inplane, side2]