public int FindEnterenceVertexNo(int noOfVertices, int graphNo, int start, int placeID) { FindShortestPath find = new FindShortestPath(); int[,] graph, innerGraph; int[] dist_1, dist_2, distance, ids; int innerStart, innerEnd = 0, innerVerticesNo; if (graphNo == 0) { graph = Data.footRoutesGraph; } else { graph = Data.vehicleRoutesGraph; } ids = LocationData.GetDepartmentAndFloor(placeID); if (ids[0] == 1) { innerGraph = Data.CSDepartmentGraph; innerVerticesNo = Data.CSDepartmentGrapheVertices; } else { innerGraph = Data.footRoutesGraph; innerVerticesNo = Data.footGrapheVertices; } for (int j = 0; j < Data.CSMainPlaceMatch.Length; j++) { if (Data.CSMainPlaceMatch[j] == placeID) { innerEnd = j; break; } } dist_1 = find.GetShortestDistanceList(graph, noOfVertices, start); distance = new int[Data.EntranceOuterMatch.Length]; for (int i = 0; i < Data.EntranceOuterMatch.Length; i++) { distance[i] = dist_1[Data.EntranceOuterMatch[i]]; innerStart = Data.CSMainEntranceInnerMatch[i]; dist_2 = find.GetShortestDistanceList(innerGraph, innerVerticesNo, innerStart); distance[i] += dist_2[innerEnd]; } //according to the department,Entrance outer match should change return(Data.EntranceOuterMatch[Array.IndexOf(distance, distance.Min())]); }
public double[] FindDistanceAndTime(int graphNo, int start, int end) { FindShortestPath find = new FindShortestPath(); int[,] graph; int V_No; int[] distances; switch (graphNo) { case 0: graph = Data.footRoutesGraph; V_No = Data.footGrapheVertices; break; case 1: graph = Data.vehicleRoutesGraph; V_No = Data.vehicleGrapheVertices; break; case 2: graph = Data.CSDepartmentGraph; V_No = Data.CSDepartmentGrapheVertices; break; default: graph = Data.footRoutesGraph; V_No = Data.footGrapheVertices; break; } distances = find.GetShortestDistanceList(graph, V_No, start); if (graphNo == 1) { return new double[] { distances[end], Math.Round((distances[end] * Data.drivingTimePerMeter) / 60, 2) } } ; else { return new double[] { distances[end], Math.Round((distances[end] * Data.walkingTimePerMeter) / 60, 1) } }; } int Middle { get; set; } }