public void Calculate_ReturnsTheCorrectNumberOfAngles_ForMaxAngleInRadians( double fromAngleInDegrees, double toAngleInDegrees, int steps, Constants.TurnDirection turnDirection, double maxAngleInRadians, double[] expectedAnglesInDegrees) { // Arrange IEnumerable <double> expectedAngles = ConvertToAngles(expectedAnglesInDegrees); AngelInterpolationCalculator sut = CreateSut(); sut.FromAngleInRadians = Angle.FromDegrees(fromAngleInDegrees).Radians; sut.ToAngleInRadians = Angle.FromDegrees(toAngleInDegrees).Radians; sut.Steps = steps; sut.TurnDirection = turnDirection; sut.MaxAngleInRadians = maxAngleInRadians; // Act sut.Calculate(); // Assert AssertAngles(expectedAngles, sut.AnglesInRadians); }
public void CalculateIntervall_ReturnsIntervallAngle_ForGivenParameters( double fromAngleInDegrees, double toAngleInDegrees, int steps, Constants.TurnDirection turnDirection, double expectedIntervallInDegrees) { Console.WriteLine( "fromAngleInDegrees: {0} toAngleInDegrees: {1} steps: {2} turnDirection: {3} expectedIntervallInDegrees: {4}", fromAngleInDegrees, toAngleInDegrees, steps, turnDirection, expectedIntervallInDegrees); // Arrange double fromAngle = Angle.FromDegrees(fromAngleInDegrees).Radians; double toAngle = Angle.FromDegrees(toAngleInDegrees).Radians; double expectedIntervall = Angle.FromDegrees(expectedIntervallInDegrees).Radians; AngleIntervallCalculator sut = CreateSut(); sut.FromAngleInRadians = fromAngle; sut.ToAngleInRadians = toAngle; sut.TurnDirection = turnDirection; sut.Steps = steps; // Act sut.Calculate(); // Assert Assert.AreEqual(expectedIntervall, sut.Intervall); }
public void Calculate_ReturnsTheCorrectNumberOfAngles_ForGivenSteps( double fromAngleInDegrees, double toAngleInDegrees, int steps, Constants.TurnDirection turnDirection, double[] expectedAnglesInDegrees) { Console.WriteLine("fromAngleInDegrees: {0} toAngleInDegrees: {1} " + "steps: {2} turnDirection: {3} expectedAnglesInDegrees: {4}", fromAngleInDegrees, toAngleInDegrees, steps, turnDirection, expectedAnglesInDegrees); // Arrange IEnumerable <double> expectedAngles = ConvertToAngles(expectedAnglesInDegrees); AngelInterpolationCalculator sut = CreateSut(); sut.FromAngleInRadians = Angle.FromDegrees(fromAngleInDegrees).Radians; sut.ToAngleInRadians = Angle.FromDegrees(toAngleInDegrees).Radians; sut.Steps = steps; sut.TurnDirection = turnDirection; // Act sut.Calculate(); // Assert AssertAngles(expectedAngles, sut.AnglesInRadians); }
public void TurnDirectionToPointTest() { Constants.TurnDirection actual = m_Line.TurnDirectionToPoint(new Point(20.0, 20.0)); Assert.AreEqual(Constants.TurnDirection.Clockwise, actual); }
public void TurnDirectionToPoint_ReturnsUnknown_ForNoSegments() { // Arrange // Act Constants.TurnDirection actual = m_Sut.TurnDirectionToPoint(m_DoesNotMatter); // Assert Assert.AreEqual(Constants.TurnDirection.Unknown, actual); }
internal TurnCircleArcSegment(IArcSegment arcSegment, Constants.TurnDirection direction, Constants.CircleOrigin circleOrigin) { ArcSegment = arcSegment; m_Direction = direction; m_CircleOrigin = circleOrigin; AngleToXAxisAtEndPoint = arcSegment.AngleToXAxisAtEndPoint; AngleToXAxisAtStartPoint = arcSegment.AngleToXAxisAtStartPoint; }
public TurnCircle([NotNull] ICircle circle, Constants.CircleSide side, Constants.CircleOrigin origin, Constants.TurnDirection turnDirection) { m_Circle = circle; m_Side = side; m_Origin = origin; m_TurnDirection = turnDirection; m_Radius = new Distance(Circle.Radius); }
public Constants.TurnDirection TurnDirectionToPoint(Point point) { IPolylineSegment firstSegment = m_Segments.FirstOrDefault(); if (firstSegment == null) { return(Constants.TurnDirection.Unknown); } Constants.TurnDirection turnDirection = firstSegment.TurnDirectionToPoint(point); return(turnDirection); }
private Angle CalculateTangentAngleToXAxisAtPoint([NotNull] Point centrePoint, [NotNull] Point pointOnCircle, Constants.TurnDirection turnDirection) { var line = new Line(centrePoint, pointOnCircle); Angle angleToXAxis = turnDirection == Constants.TurnDirection.Clockwise ? line.AngleToXAxis - Angle.For90Degrees : line.AngleToXAxis + Angle.For90Degrees; return(angleToXAxis); }
public TurnCircleArcSegment([NotNull] ICircle circle, Constants.TurnDirection direction, Constants.CircleOrigin circleOrigin, [NotNull] Point startPoint, [NotNull] Point endPoint) { ArcSegment = new ArcSegment(circle, startPoint, endPoint, direction); m_Direction = direction; m_CircleOrigin = circleOrigin; AngleToXAxisAtEndPoint = ArcSegment.AngleToXAxisAtEndPoint; AngleToXAxisAtStartPoint = ArcSegment.AngleToXAxisAtStartPoint; }
public void CalculateForZeroTest() { var startPoint = new Point(1, 0); var endPoint = new Point(0, 0); var line = new Line(startPoint, endPoint); var point = new Point(-1, 0); Constants.TurnDirection actual = m_Calculator.Calculate(line, point); Assert.AreEqual(Constants.TurnDirection.Unknown, actual); }
public void CalculateForRightReturnsClockwiseTest() { var startPoint = new Point(1, 0); var endPoint = new Point(0, 0); var line = new Line(startPoint, endPoint); var point = new Point(1, 1); Constants.TurnDirection actual = m_Calculator.Calculate(line, point); Assert.AreEqual(Constants.TurnDirection.Clockwise, actual); }
public ArcSegment([NotNull] ICircle circle, [NotNull] Point startPoint, [NotNull] Point endPoint, Constants.TurnDirection arcTurnDirection = Constants.TurnDirection.Clockwise) { ValidateStartAndEndPoint(circle, startPoint, endPoint); m_Circle = circle; StartPoint = startPoint; EndPoint = endPoint; TurnDirection = arcTurnDirection; ICircleCentrePointToPointCalculator calculator = new CircleCentrePointToPointCalculator( m_Circle.CentrePoint, StartPoint, EndPoint); AngleClockwise = calculator.AngleRelativeToYAxisCounterClockwise; AngleCounterClockwise = calculator.AngleRelativeToYAxisClockwise; LengthClockwise = CalculateLength(AngleClockwise, m_Circle.Radius); LengthCounterClockwise = CalculateLength(AngleCounterClockwise, m_Circle.Radius); Length = arcTurnDirection == Constants.TurnDirection.Clockwise ? LengthClockwise : LengthCounterClockwise; AngleToXAxisAtStartPoint = CalculateTangentAngleToXAxisAtPoint(circle.CentrePoint, startPoint, arcTurnDirection); AngleToXAxisAtEndPoint = CalculateTangentAngleToXAxisAtPoint(circle.CentrePoint, endPoint, arcTurnDirection); }
public void Calculate() { Direction = Calculate(Line, Point); }