Something I used that works well is to define the position of your satellite in the orbital plane with:
satellite_mesh_position.set(
orbit_radius * Math.cos(orbit_angle_x),
0,
orbit_radius * Math.sin(orbit_angle_y)
);
Then you attach this mesh by parenting to an orbital transform node whose only purpose is to tilt the orbital plane.
From your 3 euler angles of inclination, you can deduce a normal vector to the orbital plane.
By taking the cross product between this target normal vector and a simple up vector, you get a rotation axis to use to rotate your orbital node, then you can use Vector3.GetAngleBetweenVectors
to figure out the rotation angle.
Finally you call
orbitalNode.rotate(rotationAxis, rotationAngle, Space.World)
This should position the satellite in the exact position you want.
If you cannot use parenting, then instead of using an intermediate TransformNode, you can directly modify the local orbit position from the beginning using a rotation matrix:
const rotationMatrix = Matrix.RotationAxis(rotationAxis, angle);
return Vector3.TransformCoordinates(localPosition, rotationMatrix).addInPlace(centerOfOrbit);