def d_orthographic_camera_d_shape_parameters(shape_pc_uv, camera):
    """
    Calculates the derivative of the orthographic projection with respect to
    the shape parameters.

    Parameters
    ----------
    shape_pc_uv : ``(n_points, 3, n_parameters)`` `ndarray`
        The (sampled) basis of the shape model.
    camera : `menpo3d.camera.OrthographicCamera`
        The camera object that is responsible of projecting the model to the
        image plane.

    Returns
    -------
    dw_da : ``(2, n_shape_parameters, n_points)`` `ndarray`
        The derivative of the perspective camera transform with respect to
        the shape parameters.
    """
    n_points, n_dims, n_parameters = shape_pc_uv.shape
    assert n_dims == 3
    dp_da_uv = camera.rotation_transform.apply(shape_pc_uv.transpose(0, 2, 1)
        ).T
    return camera.projection_transform.focal_length * dp_da_uv[:2]
