(controls: FourPoints, 
                         subdivisions: int, 
                         include_last=False)
return positions
Returns `subdivisions` Points between the 2nd & 3rd elements of `controls`,
    on a quadratic curve that passes through all 4 control points.
    If `include_last` is True, return `subdivisions` + 1 points, the last being
    controls[2]. 

    No reason to call this unless you're trying to do something very specific
Returns `subdivisions` Points between the 2nd & 3rd elements of `controls`,
    on a quadratic curve that passes through all 4 control points.
    If `include_last` is True, return `subdivisions` + 1 points, the last being
    controls[2].
Returns subdivisions Points between the 2nd & 3rd elements of controls on a quadratic curve that passes through all 4 control points . If include_last is True return subdivisions + 1 points the last being controls [ 2 ] .
def _catmull_rom_segment(controls: FourPoints, 
                         subdivisions: int, 
                         include_last=False) -> List[Point3]: 
    """
    Returns `subdivisions` Points between the 2nd & 3rd elements of `controls`,
    on a quadratic curve that passes through all 4 control points.
    If `include_last` is True, return `subdivisions` + 1 points, the last being
    controls[2]. 

    No reason to call this unless you're trying to do something very specific
    """
    pos: Point23 = None
    positions: List[Point23] = []

    num_points = subdivisions
    if include_last:
        num_points += 1

    p0, p1, p2, p3 = [euclidify(p, Point3) for p in controls]
    a = 2 * p1
    b = p2 - p0
    c = 2* p0 - 5*p1 + 4*p2 - p3
    d = -p0 + 3*p1 - 3*p2 + p3

    for i in range(num_points):
        t = i/subdivisions
        pos = 0.5 * (a + (b * t) + (c * t * t) + (d * t * t * t))
        positions.append(Point3(*pos))
    return positions
def _catmull_rom_segment ( controls : FourPoints , subdivisions : int , include_last = False ) -> List [ Point3 ] : pos : Point23 = None positions : List [ Point23 ] = [ ] num_points = subdivisions if include_last : num_points += 1 p0 , p1 , p2 , p3 = [ euclidify ( p , Point3 ) for p in controls ] a = 2 * p1 b = p2 - p0 c = 2 * p0 - 5 * p1 + 4 * p2 - p3 d = - p0 + 3 * p1 - 3 * p2 + p3 for i in range ( num_points ) : t = i / subdivisions pos = 0.5 * ( a + ( b * t ) + ( c * t * t ) + ( d * t * t * t ) ) positions . append ( Point3 ( * pos ) ) return positions