from typing import Tuple
from typing import Union


def find_center_point_of_circle(
    point_a: Tuple[float, float],
    point_b: Tuple[float, float],
    point_3: Tuple[float, float],
) -> Union[Tuple[float, float], None]:
    """
    Calculates the center of a circle passing through 3 points.
    Args:
        point_a: point 1 coordinates
        point_b: point 2 coordinates
        point_3: point 3 coordinates
    Returns:
        center of the circle coordinates or None if 3 points on a line are
        input and the radius
    """

    temp = point_b[0] * point_b[0] + point_b[1] * point_b[1]
    bc = (point_a[0] * point_a[0] + point_a[1] * point_a[1] - temp) / 2
    cd = (temp - point_3[0] * point_3[0] - point_3[1] * point_3[1]) / 2
    det = (point_a[0] - point_b[0]) * (point_b[1] - point_3[1]) - (
        point_b[0] - point_3[0]
    ) * (point_a[1] - point_b[1])

    if abs(det) < 1.0e-6:
        return None

    # Center of circle
    cx = (bc * (point_b[1] - point_3[1]) - cd * (point_a[1] - point_b[1])) / det
    cy = ((point_a[0] - point_b[0]) * cd - (point_b[0] - point_3[0]) * bc) / det

    return (cx, cy)