public MatrixCreatrix(Vector2 start, Vector2 end, IEnumerable <Tuple <Vector2, Vector2> > roads) { IEnumerable <Tuple <Vector2, Vector2> > RoadsRange; Double distance = Dist.get_dist(start, end); RoadsRange = InRange(distance, roads, start, end); int q = 0; foreach (var i in RoadsRange) { q++; graph.AddNode(i); } Console.WriteLine(q); foreach (var i in RoadsRange) { foreach (var j in RoadsRange) { if (i != j) { if (i.Item2 == j.Item1) { graph.AddConnection(i, j, GetDistDing(j.Item2, end)); } } } } Dijkstur dk = new Dijkstur(graph, start); dk.hurrdurr(graph, start); pleasework = dk.GetDatList(); }
static void mergeSort(Vector2[] number, int low, int mid, int high, Vector2 house) { Vector2[] temp = new Vector2[50]; int i, pos, l_end, h; pos = low; l_end = (mid - 1); h = (high - low + 1); while ((low <= l_end) && (mid <= high)) { if (Dist.get_dist(number[low], house) <= Dist.get_dist(number[mid], house)) { temp[pos++] = number[low++]; } else { temp[pos++] = number[mid++]; } } while (low <= l_end) { temp[pos++] = number[low++]; } while (mid <= high) { temp[pos++] = number[mid++]; } for (i = 0; i < h; i++) { number[high] = temp[high]; high--; } }
public bool InRange(Tuple <Vector2, float> house, Node node) { double range = Dist.get_dist(house.Item1, node.Vec2); if (range < house.Item2) { return(true); } else { return(false); } }
public IEnumerable <Tuple <Vector2, Vector2> > InRange(Double dist, IEnumerable <Tuple <Vector2, Vector2> > roads, Vector2 start, Vector2 end) { IEnumerable <Tuple <Vector2, Vector2> > RoadsInRange; var roadlist = new List <Tuple <Vector2, Vector2> >(); foreach (var i in roads) { if (Dist.get_dist(i.Item1, start) < dist && Dist.get_dist(i.Item2, end) < dist || Dist.get_dist(i.Item2, start) < dist && Dist.get_dist(i.Item2, end) < dist) { roadlist.Add(i); } } RoadsInRange = roadlist; return(RoadsInRange); }
public double GetDistDing(Vector2 start, Vector2 end) { return(Dist.get_dist(start, end)); }