void Update()
        {
            if (celestialOrigin.coordinateType != CelestialCoordinateType.Horizontal)
            {
                text.text = "";
                return;
            }
            switch (coordsType)
            {
            case CelestialCoordinateType.Horizontal:
            default:
                var horiz = new HorizontalCoords(cameraRotation.value);
                text.text = $"Az: {horiz.azimuth.ToString("0.0")}\nAlt: {horiz.altitude.ToString("0.0")}";
                break;

            case CelestialCoordinateType.Equatorial:
                var rot = Quaternion.Inverse(equatorialOrigin.value) * cameraRotation.value;
                var equ = new EquatorialCoords(rot);
                text.text = $"RA: {equ.rightAscention.ToString("0.0")}\nDec: {(equ.declination).ToString("0.0")}";
                break;

            case CelestialCoordinateType.Ecliptic:
                var ecl = EclipticCoords.FromQuaternionUntested(cameraRotation.value);
                text.text = $"Lon: {ecl.longitude.ToString("0.0")}\nLat: {ecl.latitude.ToString("0.0")}";
                break;
            }
        }
        public static EclipticCoords FromQuaternionUntested(Quaternion rotation, double radius = 1)
        {
            var euler = rotation.eulerAngles;
            var ecl   = new EclipticCoords(0, 0);

            ecl.latitude  = euler.x;
            ecl.longitude = euler.y;
            ecl.radius    = radius;
            return(ecl);
        }
        public EclipticCoords ToEclipticSpherical()
        {
            var ecl = new EclipticCoords(
                Math.Atan2(z, Math.Sqrt(x * x + y * y)) * StarMath.rad2deg,
                Math.Atan2(y, x) * StarMath.rad2deg,
                this.Length());

            ecl.longitude = StarMath.WrapDeg(ecl.longitude);            //nesecary?
            return(ecl);
        }