예제 #1
0
    public void Test_S1ChordAngle_ArithmeticPrecision()
    {
        // Verifies that S1ChordAngle is capable of adding and subtracting angles
        // extremely accurately up to Pi/2 radians.  (Accuracy continues to be good
        // well beyond this value but degrades as angles approach Pi.)
        S1ChordAngle kEps        = S1ChordAngle.FromRadians(1e-15);
        S1ChordAngle k90         = S1ChordAngle.Right;
        S1ChordAngle k90MinusEps = k90 - kEps;
        S1ChordAngle k90PlusEps  = k90 + kEps;
        double       kMaxError   = 2 * S2.DoubleEpsilon;

        Assert2.Near(k90MinusEps.Radians(), S2.M_PI_2 - kEps.Radians(), kMaxError);
        Assert2.Near(k90PlusEps.Radians(), S2.M_PI_2 + kEps.Radians(), kMaxError);
        Assert2.Near((k90 - k90MinusEps).Radians(), kEps.Radians(), kMaxError);
        Assert2.Near((k90PlusEps - k90).Radians(), kEps.Radians(), kMaxError);
        Assert2.Near((k90MinusEps + kEps).Radians(), S2.M_PI_2, kMaxError);
    }