Matrix doesn't set right

Solved it
The matrix needs a right ascension correction, declination okay.
And not consistently! known corrections are:
[0, 0,0,0, 245,5, 100,-27,290,0,0,-27]
I ask why? How can it done without correction?
http://innerbeing.epizy.com/cwebgl/WebGLEarth.html

function hostmat1(i) {
  var d = [0, 0,0,0, 245,5, 95,-27,290,0,0,-27]; d = d[i];
  var r = [-1,0,0], u = NP[i], e = [0,0,1]; u = multv(u,.95);
  if (d) u = rotation(dtor(d),[0,1,0],u);
  e = normaliz(crossprod(r,u));
  r = normaliz(crossprod(u,e));
  return new THREE.Matrix4().set(r[0],r[1],r[2],0,u[0],u[1],u[2],0,e[0],e[1],e[2],0,0,0,0,1);
}
function hostmat(i) {
  var r = [-1,0,0], u = NP[i], e = [0,0,1]; u = multv(u,1.05);
  e = normaliz(crossprod(r,u));
  r = normaliz(crossprod(u,e));
  var matrix = new THREE.Matrix4().set(r[0],r[1],r[2],0,u[0],u[1],u[2],0,e[0],e[1],e[2],0,0,0,0,1);
return matrix.getInverse(matrix);
}