// MMath.SinToCos(double, EQuadrantList) /// <summary> /// Liefert den Kosinuswert zum Sinuswert und Quadranten. /// </summary> /// <param name="value">Sinuswert.</param> /// <param name="quadrant">Quadrant.</param> /// <returns>Kosinuswert zum Sinuswert und Quadranten.</returns> public static double SinToCos(double value, EQuadrant quadrant) { double rtn = MMath.Sgn(value) * MMath.Sqr(1.0 - value * value); if (quadrant == EQuadrant.II || quadrant == EQuadrant.IV) { rtn = -rtn; } return(rtn); }
// MMath.ToQuadrant(double) /// <summary> /// Liefert den Quadranten zum Winkel. /// </summary> /// <param name="value">Winkel in Bogenmaß.</param> /// <returns>Quadrant zum Winkel.</returns> public static EQuadrant ToQuadrant(double value) { // Quadrant bestimmen und liefern double rtn = MMath.Mod(value, MMath.Pi2); if (MMath.Sgn(rtn) == -1.0) { rtn += MMath.Pi2; } return((EQuadrant)(int)MMath.Ceil(rtn / MMath.Rad090)); }
// 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); }