Convert Moreland's Msh colorspace to CIE L*a*b*.

    *msh* should be of shape (*, 3).

    Return value will have same shape.

def msh_to_cielab (msh):
    """Convert Moreland's Msh colorspace to CIE L*a*b*.

    *msh* should be of shape (*, 3).

    Return value will have same shape.

    """
    cielab = np.empty_like (msh)
    cielab[...,L] = msh[...,M] * np.cos (msh[...,S])
    cielab[...,A] = msh[...,M] * np.sin (msh[...,S]) * np.cos (msh[...,H])
    cielab[...,B] = msh[...,M] * np.sin (msh[...,S]) * np.sin (msh[...,H])
    return cielab