public void LeftIntersection_WhenSweeplinePassesThroughLowerOfTheTwoFocii_ShouldReturnDirectionOfThatFocus
            (Arc arc, Sweepline sweepline)
        {
            arc.LeftNeighbour.Position = Utilities.VectorAt(114, 94);
            arc.Site.Position          = Utilities.VectorAt(96, 77);
            sweepline = Utilities.SweeplineAt(121);

            // Fixture setup
            var focus      = arc.Site.Position;
            var leftFocus  = arc.LeftNeighbour.Position;
            var lowerFocus = focus.Z < leftFocus.Z ? focus : leftFocus;

            var directionOfLowerFocus = AngleUtilities.EquatorialDirection(lowerFocus);

            sweepline.Z = lowerFocus.Z;

            // Exercise system
            var directionOfLeftIntersection = arc.LeftIntersection(sweepline);

            // Verify outcome
            var failureString = String.Format("Direction of left intersection: {0},\n",
                                              directionOfLeftIntersection);

            Assert.True(Vector.AlmostEqual(directionOfLowerFocus, directionOfLeftIntersection, Tolerance), failureString);

            // Teardown
        }
        public void LeftIntersection_OfLowerFocusWhenSweeplineIsBelowIt_ShouldBeInOrderLeftIntersectionThenSiteThenRightIntersection
            (Arc arc, Sweepline sweepline)
        {
            // Fixture setup
            var dualArc = new Arc {
                LeftNeighbour = arc.Site, Site = arc.LeftNeighbour
            };

            var lowerArc              = arc.Site.Position.Z < dualArc.Site.Position.Z ? arc : dualArc;
            var higherArc             = arc.Site.Position.Z >= dualArc.Site.Position.Z ? arc : dualArc;
            var directionOfLowerFocus = AngleUtilities.EquatorialDirection(lowerArc.Site.Position);

            // Exercise system
            var directionOfLeftIntersection  = lowerArc.LeftIntersection(sweepline);
            var directionOfRightIntersection = higherArc.LeftIntersection(sweepline);

            // Verify outcome
            var areInOrder = ArcOrderer.AreInOrder(directionOfLeftIntersection, directionOfLowerFocus, directionOfRightIntersection);

            var failureString = String.Format("Direction of left intersection: {0},\n" +
                                              "Direction of right intersection: {1},\n",
                                              directionOfLeftIntersection, directionOfRightIntersection);

            Assert.True(areInOrder, failureString);

            // Teardown
        }
        public void LeftIntersection_WhenLeftNeigbourIsSameAsArcSite_ShouldReturnDirectionOfFocus
            (Arc arc, Sweepline sweepline)
        {
            // Fixture setup
            arc.LeftNeighbour = arc.Site;
            var directionOfFocus = AngleUtilities.EquatorialDirection(arc.Site.Position);

            // Exercise system
            var directionOfLeftIntersection = arc.LeftIntersection(sweepline);

            // Verify outcome
            var failureString = String.Format("Direction of left intersection: {0},\n",
                                              directionOfLeftIntersection);

            Assert.True(Vector.AlmostEqual(directionOfFocus, directionOfLeftIntersection, Tolerance), failureString);

            // Teardown
        }
Exemple #4
0
        public void EquatorialMidpoint_OfTwoNonpolarVectors_ShouldBeInOrderWithTheTwoVectorsEquatorialDirections
            (Vector3 u, Vector3 v)
        {
            // Fixture setup
            var directionOfU = AngleUtilities.EquatorialDirection(u);
            var directionOfV = AngleUtilities.EquatorialDirection(v);

            // Exercise system
            var midpoint = AngleUtilities.EquatorialMidpoint(u, v);

            // Verify outcome
            var areInOrder = ArcOrderer.AreInOrder(directionOfU, midpoint, directionOfV);

            var failureString = String.Format("Midpoint was {0}", midpoint);

            Assert.True(areInOrder, failureString);

            // Teardown
        }
Exemple #5
0
        public void EquatorialMidpoint_OfTwoNonpolarVectors_ShouldBeEquidistantFromThoseVectorsEquatorialDirections
            (Vector3 u, Vector3 v)
        {
            // Fixture setup
            var directionOfU = AngleUtilities.EquatorialDirection(u);
            var directionOfV = AngleUtilities.EquatorialDirection(v);

            // Exercise system
            var midpoint = AngleUtilities.EquatorialMidpoint(u, v);

            // Verify outcome
            var distanceToU = Trig.InverseCosine(directionOfU.ScalarMultiply(midpoint));
            var distanceToV = Trig.InverseCosine(directionOfV.ScalarMultiply(midpoint));

            Debug.WriteLine(distanceToU + "," + distanceToV);

            var failureString = String.Format("Midpoint was {0}", midpoint);

            Assert.True(Number.AlmostEqual(distanceToU, distanceToV, Tolerance), failureString);

            // Teardown
        }