def METHOD_NAME(p1, p2, b, radius=0.5):
    """
                            .
                        .  B.
                    .       .
               c.           .a
            .               .
        .                 C . = 90
    .....A........b..........
    c = circle enter distance
    b = tangent distance
    """    
    a = Vector(p1)
    b = Vector(b)
    c = Vector(p2)
    a = (a-b).normalized() + b
    c = (c-b).normalized() + b
    focal = (a + c) / 2.0
    focal_length = (b-focal).length
    try:
        angleA = (a-b).angle(c-b) / 2.0
    except ValueError as e:
        print('smoothlines encountered non zero length vectors')
        #  Vector.angle(other): zero length vectors have no valid angle
        return None
    # slightly undefined input handled ugly-er
    try:
        sideA = radius
        sideB = sideA / tan(angleA)
        sideC = sideA / sin(angleA)
    except Exception as e:
        print(e)
        print("no idea why this input happens.. show me a shorter version of your input mesh")
        return None
    try:
        ratio = (sideC - radius) / focal_length
    except Exception as e:
        print(e)
        print("smoothlines encountered two colinear lines, no arc to generate")
        # this will be interpreted as a no-op
        # potentially here you could return something like  [lerp(A,B, "radius"), B, lerp(C, B, "radius")]
        return None
    mid = b.lerp(focal, ratio)[:]
    ab_rate = sideB / (a-b).length
    cb_rate = sideB / (c-b).length
    p1 = b.lerp(a, ab_rate)[:]
    p2 = b.lerp(c, cb_rate)[:]
    return p1, mid, p2