(cap_points:int=3, index_start:int=0)
return faces
Return a face-triangles list for the endpoint of a tube with cap_points points
    We construct a fan of triangles all starting at point index_start and going
    to each point in turn. 
    
    NOTE that this would not work for non-convex rings. 
    In that case, it would probably be better to create a new centroid point and have
    all triangle reach out from it. That wouldn't handle all polygons, but would
    work with mildly concave ones like a star, for example.

    So fan_endcap_list(cap_points=6, index_start=0), like so:
           0   
         /   \
       5      1
       |      | 
       4      2
         \   /
           3      
    
           returns:  [(0,1,2), (0,2,3), (0,3,4), (0,4,5)]
Return a face-triangles list for the endpoint of a tube with cap_points points
    We construct a fan of triangles all starting at point index_start and going
    to each point in turn. 
    
    NOTE that this would not work for non-convex rings. 
    In that case, it would probably be better to create a new centroid point and have
    all triangle reach out from it. That wouldn't handle all polygons, but would
    work with mildly concave ones like a star, for example.
Return a face - triangles list for the endpoint of a tube with cap_points points We construct a fan of triangles all starting at point index_start and going to each point in turn . NOTE that this would not work for non - convex rings . In that case it would probably be better to create a new centroid point and have all triangle reach out from it . That wouldn t handle all polygons but would work with mildly concave ones like a star for example .
def fan_endcap_list(cap_points:int=3, index_start:int=0) -> List[FaceTrio]:
    '''
    Return a face-triangles list for the endpoint of a tube with cap_points points
    We construct a fan of triangles all starting at point index_start and going
    to each point in turn. 
    
    NOTE that this would not work for non-convex rings. 
    In that case, it would probably be better to create a new centroid point and have
    all triangle reach out from it. That wouldn't handle all polygons, but would
    work with mildly concave ones like a star, for example.

    So fan_endcap_list(cap_points=6, index_start=0), like so:
           0   
         /   \
       5      1
       |      | 
       4      2
         \   /
           3      
    
           returns:  [(0,1,2), (0,2,3), (0,3,4), (0,4,5)]      
    '''
    faces: List[FaceTrio] = []
    for i in range(index_start + 1, index_start + cap_points - 1):
        faces.append((index_start, i, i+1))
    return faces
def fan_endcap_list ( cap_points : int = 3 , index_start : int = 0 ) -> List [ FaceTrio ] : faces : List [ FaceTrio ] = [ ] for i in range ( index_start + 1 , index_start + cap_points - 1 ) : faces . append ( ( index_start , i , i + 1 ) ) return faces