예제 #1
0
        public Itineraire chemin(Pt_cle dep, Pt_cle arr)
        {
            List <Itineraire> listIti;

            // lorsque que les 2 points sont dans le même couloir
            if (compareList(dep.getCouloir().getNoeudsVoisin(), arr.getCouloir().getNoeudsVoisin()) == false)
            {
                List <ListNoeud> listList;
                listList = rechercheItiNoeud(dep, arr);
                for (int i = 0; i < listList.Count; i++)
                {
                    listIti.Add(generationIti(listList[i], dep, arr));
                }
            }
            else
            {
                Itineraire         iti      = new Itineraire();
                List <CaseCouloir> listCase = generationList(dep.getCouloir(), arr.getCouloir());
                listCase.Add(arr.getCouloir());
                for (int j = 0; j < listCase.Count; j++)
                {
                    iti.addCase(listCase[j]);
                }
                listIti.Add(iti);
            }
            iti = itiFinal(listIti);
            return(iti);
        }
예제 #2
0
        // la méthode génère une liste de CaseCouloir avec l'aide de la liste des CaseNoeud
        public Itineraire generationIti(ListNoeud listN, Pt_cle dep, Pt_cle arr)
        {
            int                lig, col;
            Itineraire         iti   = new Itineraire();
            List <CaseCouloir> liste = new List <CaseCouloir>();

            // liste contenant la case départ jusqu'au premier noeud
            liste = generationList(dep.getCouloir(), listN[0]);
            for (int i = 0; i < liste.Count; i++)
            {
                iti.addCase(liste[i]);
            }
            // boucle pour rajouter toutes les CaseCouloir qui sont entre les CaseNoeud
            for (int j = 1; j < listN; j++)
            {
                liste = generationList(listN[j - 1], listN[j]);
                for (int k = 0; k < liste.Count; k++)
                {
                    iti.addCase(liste[k]);
                }
            }
            // ajout des CaseCouloir entre le dernier noeud et le point d'arrivée
            liste = generationList(listN[listN.Count - 1], arr.getCouloir());
            for (int l = 0; l < liste.Count; l++)
            {
                iti.addCase(liste[l]);
            }
            // ajout du point d'arrivée
            iti.addCase(arr.getCouloir());

            return(iti);
        }