def only_horizon(meshes, xs, ys, zs, expose_horizon=False):
    """
    Check all visible or partial triangles to see if they're behind the horizon,
    by checking the direction of the z-component of the normals (ie hidden if mu<0)
    """

    # if visibility == 0, it should remain 0
    # if visibility == 0.5, it should stay 0.5 if mu > 0 else it should become 0
    # if visibility == 1, it should stay 1 if mu > 0 else it should become 0

    # this can all by easily done by multiplying by int(mu>0) (1 if visible, 0 if hidden)

    return {comp_no: mesh.visibilities * (mesh.mus > 0).astype(int) for comp_no, mesh in meshes.items()}, None, None
def only_horizon ( meshes , xs , ys , zs , expose_horizon = False ) : return { comp_no : mesh . visibilities * ( mesh . mus > 0 ) . astype ( int ) for comp_no , mesh in meshes . items ( ) } , None , None
Check all visible or partial triangles to see if they're behind the horizon,
    by checking the direction of the z-component of the normals (ie hidden if mu<0)