예제 #1
0
        private WierzcholekChodnika DodajLubZnajdzWierzcholek(Punkt <double> pozycja)
        {
            WierzcholekChodnika wierzcholek = WierzcholkiChodnikow.Find(obiekt => obiekt.Pozycja.Equals(pozycja));

            if (wierzcholek == null)
            {
                WierzcholkiChodnikow.Add(wierzcholek = new WierzcholekChodnika(pozycja, TypWierzcholkaPieszych.ChodnikDrogi));
            }

            return(wierzcholek);
        }
예제 #2
0
        private WierzcholekChodnika DzielTraseWPunkcie(KrawedzGrafu trasa, Punkt <double> punkt)
        {
            WierzcholekChodnika wierzcholekA        = (WierzcholekChodnika)trasa.WierzcholekA;
            WierzcholekChodnika wierzcholekB        = (WierzcholekChodnika)trasa.WierzcholekB;
            WierzcholekChodnika dzielacyWierzcholek = new WierzcholekChodnika(punkt, TypWierzcholkaPieszych.ChodnikDrogi);

            WierzcholkiChodnikow.Add(dzielacyWierzcholek);

            Chodniki.Remove(trasa.UsunKrawedz());
            Chodniki.Add(KrawedzGrafu.StworzDroge(wierzcholekA, dzielacyWierzcholek));
            Chodniki.Add(KrawedzGrafu.StworzDroge(dzielacyWierzcholek, wierzcholekB));

            return(dzielacyWierzcholek);
        }
        private void BudujChodnik(Punkt <double> punktA, Punkt <double> punktB)
        {
            WierzcholekChodnika wierzcholekA;

            if (punktA.X == 0)
            {
                wierzcholekA = new WierzcholekChodnika(new Punkt <double>(punktA.X - 0.5, punktA.Y), TypWierzcholkaPieszych.PunktWejscia);
            }
            else if (punktA.Y == 0)
            {
                wierzcholekA = new WierzcholekChodnika(new Punkt <double>(punktA.X, punktA.Y - 0.5), TypWierzcholkaPieszych.PunktWejscia);
            }
            else
            {
                wierzcholekA = new WierzcholekChodnika(punktA, TypWierzcholkaPieszych.ChodnikPrzestrzeni);
            }

            WierzcholekChodnika wierzcholekB;

            if (punktB.X == rozmiarMapyX - 1)
            {
                wierzcholekB = new WierzcholekChodnika(new Punkt <double>(punktB.X + 0.5, punktB.Y), TypWierzcholkaPieszych.PunktWejscia);
            }
            else if (punktB.Y == rozmiarMapyY - 1)
            {
                wierzcholekB = new WierzcholekChodnika(new Punkt <double>(punktB.X, punktB.Y + 0.5), TypWierzcholkaPieszych.PunktWejscia);
            }
            else
            {
                wierzcholekB = new WierzcholekChodnika(punktB, TypWierzcholkaPieszych.ChodnikPrzestrzeni);
            }

            WierzcholkiChodnikow.Add(wierzcholekA);
            WierzcholkiChodnikow.Add(wierzcholekB);
            Chodniki.Add(KrawedzGrafu.StworzDroge(wierzcholekA, wierzcholekB));

            ZaznaczNaMapie <TypPrzestrzeni>(Mapa, new Prostokat((Punkt <int>)punktA, (Punkt <int>)punktB), TypPrzestrzeni.Chodnik);
        }