Esempio n. 1
0
        // MMath.ArcTan(double, double)
        /// <summary>
        /// Liefert den Winkel zum Tagensquotient in Bogenmaß.
        /// </summary>
        /// <param name="x">Zähler des Quotienten.</param>
        /// <param name="y">Nenner des Quotienten.</param>
        /// <returns>Winkel zum Tagensquotient in Bogenmaß.</returns>
        public static double ArcTan(double x, double y)
        {
            // TODO: MMath.ArcTan(double, double): Prüfen, ob Eigenimplemention erforderlich ist {Meeus Seite 9}.
            if (y == 0)
            {
                return(MMath.Sgn(x) * MMath.Rad090);
            }
            double l = MMath.ArcTan(x / y);

            if (MMath.Sgn(y) == -1.0)
            {
                l += MMath.Pi;
            }
            return(l);
        }
Esempio n. 2
0
        // MMath.ToLambda(double, double)
        /// <summary>
        /// Liefert die Längenkomponente des Polars zur X- und Y-Komponente des Vektors.
        /// </summary>
        /// <param name="x">X-Komponente.</param>
        /// <param name="y">Y-Komponente.</param>
        /// <returns>Längenkomponente des Polars zur X- und Y-Komponente des Vektors.</returns>
        public static double ToLambda(double x, double y)
        {
            // Ursprung verarbeiten
            if (x == 0.0 && y == 0.0)
            {
                return(0.0);
            }

            // Winkel berechnen
            double phi = 2.0 * MMath.ArcTan(y, MMath.Abs(x) + MMath.Sqr(x * x + y * y));

            if (x >= 0.0 && y >= 0.0)
            {
                return(phi);
            }
            if (y < 0.0)
            {
                return(MMath.Pi2 + phi);
            }
            return(MMath.Pi - phi);
        }