BabylonJS/Babylon.js/blob/90dbafed8de9de752cdc399604f9c7c51116d630/src/Cameras/arcRotateCamera.ts#L993
 * Rebuilds angles (alpha, beta) and radius from the give position and target
 */
 public rebuildAnglesAndRadius(): void {
 this._position.subtractToRef(this._getTargetPosition(), this._computationVector);

 // need to rotate to Y up equivalent if up vector not Axis.Y
 if (this._upVector.x !== 0  this._upVector.y !== 1.0  this._upVector.z !== 0) {
 Vector3.TransformCoordinatesToRef(this._computationVector, this._upToYMatrix, this._computationVector);
 }

 this.radius = this._computationVector.length();

 if (this.radius === 0) {
 this.radius = 0.0001; // Just to avoid division by zero
 }

 // Alpha
 const previousAlpha = this.alpha;
 if (this._computationVector.x === 0 && this._computationVector.z === 0) {
 this.alpha = Math.PI / 2; // avoid division by zero when looking along up axis, and set to acos(0)
 } else {