def METHOD_NAME(knots, cyclic, num_segments):
    """
    from https://www.mvps.org/directx/articles/catmull/
    q(t) = 0.5 *( (2 * P1) +
                (-P0 + P2) * t +
                (2*P0 - 5*P1 + 4*P2 - P3) * t2 +
                (-P0 + 3*P1- 3*P2 + P3) * t3)
    """
    radii = []
    radii_add = radii.append
    sections = get_sections(knots, cyclic)
    theta = 1 / num_segments
    for idx, (p0, p1, p2, p3) in enumerate(sections):
        appendix = -1 if (cyclic or (idx < (len(sections) - 1))) else 0
        P0, P1, P2, P3 = knots[p0], knots[p1], knots[p2], knots[p3]
        for xt in range(num_segments + 1 + appendix):
            t = theta * xt
            t2 = t*t
            t3 = t2*t
            radt = 0.5*((2*P1)+(-P0+P2)*t+(2*P0-5*P1+4*P2-P3)*t2+(-P0+3*P1-3*P2+P3)*t3)
            radii_add(radt)
    return radii