// 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); }
// 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); }