Ayuda con trigonometría en 3D

Hola, estoy haciendo un programa en el que tengo que utilizar coordenadas en 3 dimensiones y tengo el siguiente problema:

Imagen

En estos momentos el programa me da los ángulos a1, a2, b1 y b2, y también se la distancia entre los dos puntos (D), también puedo suponer que las distancias de cada punto al centro (d') son iguales, con esto necesito saber o bien el ángulo "A" o directamente las coordenadas de ambos puntos.

Pensando un poco he sacado unas cuantas ecuaciones con las que podría sacar las coordenadas, que son:

d' = x1² + y1² + z1² = x2² + y2² + z2²
tan(a1) = z1/x1
tan(a2) = z2/x2
tan(b1) = z1/y1
tan(b2) = z2/y2
D² = (x1-x2)² + (y1-y2)² + (z1-z2)²

Con esto me quedarían 6 ecuaciones y 6 incognitas, y acabaría teniendo alguna ecuación de orden cuadrático que me tocaría resolver, pero como estos cálculos los tiene que hacer el programa del orden de cientos de veces por segundo, probablemente acabaría usando demasiada CPU (hay que tener en cuenta que el programa hace bastantes más cosas que esto), así que como seguro que por aquí hay alguien que haya estudiado trigonometría más en profundidad que yo, me gustaría saber si hay alguna otra manera de sacar estas coordenadas de forma más simple, o el ángulo "A" que también me valdría.

Un saludo.
Por el teorema del coseno y si no me he equivocado al despejar, mejor miratelo tú:

Cos(A) = 1 - 1/2(D/d)^2
1 respuesta