def project_cylinder_onto_2d(ax, plane,<EOL>start, end, start_radius, end_radius,<EOL>color='<STR_LIT>', alpha=<NUM_LIT:1.>):
points = generate_cylindrical_points(start, end, start_radius, end_radius, <NUM_LIT:10>)<EOL>points = np.vstack([points[plane[<NUM_LIT:0>]].ravel(),<EOL>points[plane[<NUM_LIT:1>]].ravel()])<EOL>points = points.T<EOL>hull = ConvexHull(points)<EOL>ax.add_patch(Polygon(points[hull.vertices], fill=True, color=color, alpha=alpha))<EOL>
take cylinder defined by start/end, and project it onto the plane

    Args:
        ax: matplotlib axes
        plane(tuple of int): where x, y, z = 0, 1, 2, so (0, 1) is the xy axis
        start(np.array): start coordinates
        end(np.array): end coordinates
        start_radius(float): start radius
        end_radius(float): end radius
        color: matplotlib color
        alpha(float): alpha value

    Note: There are probably more efficient ways of doing this: here the
    3d outline is calculated, the non-used plane coordinates are dropped, a
    tight convex hull is found, and that is used for a filled polygon