A semi-analytical solution to the global navigation satellite system attitude determination problem. (March 2019)