def project_ecef_vector_onto_basis(x, y, z, xx, xy, xz, yx, yy, yz, zx, zy, zz):
    """Projects vector in ecef onto different basis, with components also expressed in ECEF

    Parameters
    ----------
    x : float or array-like
        ECEF-X component of vector
    y : float or array-like
        ECEF-Y component of vector
    z : float or array-like
        ECEF-Z component of vector
    xx : float or array-like
        ECEF-X component of the x unit vector of new basis
    xy : float or array-like
        ECEF-Y component of the x unit vector of new basis
    xz : float or array-like
        ECEF-Z component of the x unit vector of new basis

    Returns
    -------
    x, y, z
        Vector projected onto new basis

    """

    out_x = x*xx + y*xy + z*xz
    out_y = x*yx + y*yy + z*yz
    out_z = x*zx + y*zy + z*zz

    return out_x, out_y, out_z