/// <summary> /// Returns true, if the sweep angles differ by less than 1e-12 (in radian) /// </summary> /// <param name="ang"></param> /// <returns></returns> public bool IsCloseTo(SweepAngle ang) { // keine Ahnung, ob des so gut ist double d = Math.Abs(ang.a - a); if (d > Math.PI) { d = Math.Abs(d - 2 * Math.PI); } return(d < 1e-12); // davon geht der sin noch }
/// <summary> /// Liefert true, wenn der im Parameter gegebene TestWinkel von diesem Winkel /// ausgehend mit dem SweepAngle überstrichen wird. /// </summary> /// <param name="sa">Überstreichnung</param> /// <param name="test">zu Testende Winkelposition</param> /// <returns></returns> public bool Sweeps(SweepAngle sa, Angle test) { double t = test; if (sa.Radian > 0.0) { if (t < a) { t += 2.0 * Math.PI; } return(t <= a + sa.Radian); } else { if (t > a) { t -= 2.0 * Math.PI; } return(t >= a + sa.Radian); // sa.Radianist hier ja negativ } }
public static bool IsNull(SweepAngle sw) { return(Math.Abs((double)sw) < epsa); }