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 }
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 }
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 }