예제 #1
0
        /// <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
        }
예제 #2
0
        /// <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
            }
        }
예제 #3
0
 public static bool IsNull(SweepAngle sw)
 {
     return(Math.Abs((double)sw) < epsa);
 }