public int GetNearestVertexNo(int department, int floor, int noOfVertices, int graphNo, double lat, double lon) { double[] distance = new double[noOfVertices], temp; int[] verticesSet; for (int i = 0; i < noOfVertices; i++) { distance[i] = int.MaxValue; } //according to the department,vertices set should change if (floor == 0) { verticesSet = Data.CSFloo_0_VerticesSet; } else if (floor == 1) { verticesSet = Data.CSFloo_1_VerticesSet; } else { verticesSet = Data.CSFloo_2_VerticesSet; } foreach (int V in verticesSet) { temp = LocationData.GetVertexLoaction(graphNo, V); distance[V] = Math.Sqrt(Math.Pow(lat - temp[0], 2) + Math.Pow(lon - temp[1], 2)); } return(Array.IndexOf(distance, distance.Min())); }
public int GetNearestVertexNo(int noOfVertices, int graphNo, double lat, double lon) { double[] distance = new double[noOfVertices]; double[] temp; for (int i = 0; i < noOfVertices; i++) { distance[i] = double.MaxValue; } for (int i = 0; i < noOfVertices; i++) { if (graphNo == 0) { if (!Data.FootGraph_MissingVerticesSet.Contains(i)) { temp = LocationData.GetVertexLoaction(graphNo, i); distance[i] = Math.Sqrt(Math.Pow(lat - temp[0], 2) + Math.Pow(lon - temp[1], 2)); } } else { if (Data.VehicleGraph_VerticesSet.Contains(i)) { temp = LocationData.GetVertexLoaction(0, i); distance[i] = Math.Sqrt(Math.Pow(lat - temp[0], 2) + Math.Pow(lon - temp[1], 2)); } } } return(Array.IndexOf(distance, distance.Min())); }
public List <double[]> ValidateRoute(int start, int end, int graphNo, int routNo, double[,] route) { int[,] endPoints; List <double[]> lst = new List <double[]>(); int size = route.GetLength(0); if (graphNo == 0) { endPoints = Data.foorRouteEndpoints; } else if (graphNo == 1) { endPoints = Data.vehicleRouteEndpoints; } else { endPoints = Data.CSDepartmentRouteEndpoints; } try { double[] temp_1 = LocationData.GetVertexLoaction(graphNo, start); double[] temp_2 = LocationData.GetVertexLoaction(graphNo, end); if ((temp_1[0] == route[0, 0] && temp_1[1] == route[0, 1]) && (temp_2[0] == route[size - 1, 0] && temp_2[1] == route[size - 1, 1])) { for (int i = 0; i < size; i++) { lst.Add(new double[] { route[i, 0], route[i, 1] }); } return(lst); } if ((temp_2[0] == route[0, 0] && temp_2[1] == route[0, 1]) && (temp_1[0] == route[size - 1, 0] && temp_1[1] == route[size - 1, 1])) { for (int i = size - 1; i >= 0; i--) { lst.Add(new double[] { route[i, 0], route[i, 1] }); } return(lst); } if (temp_1[0] == route[0, 0] && temp_1[1] == route[0, 1]) { for (int i = 0; i < size; i++) { lst.Add(new double[] { route[i, 0], route[i, 1] }); } if (endPoints[routNo, 0] == start) { Middle = endPoints[routNo, 1]; } else { Middle = endPoints[routNo, 0]; } return(lst); } if (temp_1[0] == route[size - 1, 0] && temp_1[1] == route[size - 1, 1]) { for (int i = size - 1; i >= 0; i--) { lst.Add(new double[] { route[i, 0], route[i, 1] }); } if (endPoints[routNo, 0] == start) { Middle = endPoints[routNo, 1]; } else { Middle = endPoints[routNo, 0]; } return(lst); } double[] mid = LocationData.GetVertexLoaction(graphNo, Middle); if ((mid[0] == route[0, 0] && mid[1] == route[0, 1]) && (temp_2[0] == route[size - 1, 0] && temp_2[1] == route[size - 1, 1])) { for (int i = 0; i < size; i++) { lst.Add(new double[] { route[i, 0], route[i, 1] }); } return(lst); } if ((temp_2[0] == route[0, 0] && temp_2[1] == route[0, 1]) && (mid[0] == route[size - 1, 0] && mid[1] == route[size - 1, 1])) { for (int i = size - 1; i >= 0; i--) { lst.Add(new double[] { route[i, 0], route[i, 1] }); } return(lst); } if (mid[0] == route[0, 0] && mid[1] == route[0, 1]) { for (int i = 0; i < size; i++) { lst.Add(new double[] { route[i, 0], route[i, 1] }); } if (endPoints[routNo, 0] == Middle) { Middle = endPoints[routNo, 1]; } else { Middle = endPoints[routNo, 0]; } return(lst); } if (mid[0] == route[size - 1, 0] && mid[1] == route[size - 1, 1]) { for (int i = size - 1; i >= 0; i--) { lst.Add(new double[] { route[i, 0], route[i, 1] }); } if (endPoints[routNo, 0] == Middle) { Middle = endPoints[routNo, 1]; } else { Middle = endPoints[routNo, 0]; } return(lst); } return(lst); } catch (Exception e) { return(lst); } }