/// <summary> /// Given a list of points, return the points, each with an orderId. /// </summary> /// <param name="points"></param> /// <returns></returns> private IEnumerable <OrderPoint> GetOrderPoints(IEnumerable <Point> points) { if (points.Count() > MaxClusterSize) { return(points.Select((p, i) => new OrderPoint() { PointId = p.PointId, Name = p.Name, HorizontalDisplacement = p.HorizontalDisplacement, VerticalDisplacement = p.VerticalDisplacement, OrderId = i })); } var vertices = TourBridge.GetVertices(points); var matrix = TourBridge.GetMatrix(points); var tourProvider = new TourProvider(vertices, matrix); var solvedVertices = tourProvider.Solve(); var orderedPoints = TourBridge.GetPoints(points, solvedVertices); return(orderedPoints.Select((p, i) => new OrderPoint() { PointId = p.PointId, Name = p.Name, HorizontalDisplacement = p.HorizontalDisplacement, VerticalDisplacement = p.VerticalDisplacement, OrderId = i })); }
public void GetPointsTest() { var unorderedPoints = new List <Point> { new Point { PointId = 1, HorizontalDisplacement = 1, VerticalDisplacement = 1 }, new Point { PointId = 2, HorizontalDisplacement = 2, VerticalDisplacement = 2 } }; var vertices = new List <int> { 1, 0 }; var expectedPoints = new List <Point> { unorderedPoints[1], unorderedPoints[0] }; var points = TourBridge.GetPoints(unorderedPoints, vertices); Assert.AreEqual(expectedPoints, points); }