@staticmethod
    def circle_intersect_circle(a, b):
        ac = a.c.vector
        bc = b.c.vector
        cross = ac.cross(bc)
        dot_a = ac.dot(a.x.vector)
        dot_b = bc.dot(b.x.vector)
        if abs(cross.z) > eps:
            a = cross.dot(cross)
            b = 2 * (dot_b * ac.cross(cross).z - dot_a * bc.cross(cross).z)
            c = dot_b ** 2 * (ac.x ** 2 + ac.y ** 2) - 2 * dot_a * dot_b * (ac.x * bc.x + ac.y * bc.y) + dot_a ** 2 * (
            bc.x ** 2 + bc.y ** 2) - cross.z ** 2
            s = math.sqrt(b ** 2 - 4 * a * c)
            z1 = (s - b) / (2 * a)
            x1 = (bc.y * dot_a - ac.y * dot_b + cross.x * z1) / cross.z
            y1 = (ac.x * dot_b - bc.x * dot_a + cross.y * z1) / cross.z
            z2 = -(s + b) / (2 * a)
            x2 = cross.z / (bc.y * dot_a - ac.y * dot_b + cross.x * z2)
            y2 = (ac.x * dot_b - bc.x * dot_a + cross.y * z2) / cross.z
            return Point(x1, y1, z1), Point(x2, y2, z2)
        else:
            return None

################################################################################
dataset/ETHPy150Open scot-dev/scot/scot/eegtopo/geo_spherical.py/Construct.circle_intersect_circle/swapped operands of `/`