Esempio n. 1
0
        /// <summary>
        /// Permet de dessiner le contour carré dans la matrice
        /// </summary>
        /// <param name="p_carré">Les coordonnées des deux coins opposés du carré</param>
        void DessinerCarré(Coordonnées p_carré)
        {
            double deltaX = p_carré.PosX2 - p_carré.PosX1;
            double deltaY = p_carré.PosY2 - p_carré.PosY1;

            for (int i = 0; i != deltaX;)
            {
                Matrice[p_carré.PosY1, p_carré.PosX1 + i] = CharRemplissage;
                Matrice[p_carré.PosY2, p_carré.PosX2 - i] = CharRemplissage;
                if (deltaX > 0)
                {
                    ++i;
                }
                else
                {
                    --i;
                }
            }

            for (int i = 0; i != deltaY;)
            {
                Matrice[p_carré.PosY1 + i, p_carré.PosX1] = CharRemplissage;
                Matrice[p_carré.PosY2 - i, p_carré.PosX2] = CharRemplissage;
                if (deltaY > 0)
                {
                    ++i;
                }
                else
                {
                    --i;
                }
            }
            Matrice[p_carré.PosY1, p_carré.PosX2] = CharRemplissage;
            Matrice[p_carré.PosY2, p_carré.PosX1] = CharRemplissage;
        }
Esempio n. 2
0
 /// <summary>
 /// Permet d'avoir les positions pour dessiner dans la matrices
 /// </summary>
 void AcquérirPosition(char p_choixUtilisateur)
 {
     if (p_choixUtilisateur == 'l')
     {
         Coordonnées ligne = new Coordonnées(
             LireInt32DansIntervalle("\nPosition en X du premier point : ", 1, NbColonnes),
             LireInt32DansIntervalle("Position en Y du premier point : ", 1, NbLignes),
             LireInt32DansIntervalle("Position en X du deuxième point : ", 1, NbColonnes),
             LireInt32DansIntervalle("Position en Y du deuxième point : ", 1, NbLignes));
         DessinerLigne(ligne);
     }
     else
     {
         Coordonnées carré = new Coordonnées(
             LireInt32DansIntervalle("\nPosition en X du premier coin : ", 1, NbColonnes),
             LireInt32DansIntervalle("Position en Y du premier coin : ", 1, NbLignes),
             LireInt32DansIntervalle("Position en X du coin opposé au premier : ", 1, NbColonnes),
             LireInt32DansIntervalle("Position en Y du coin opposé au premier : ", 1, NbLignes));
         DessinerCarré(carré);
     }
 }
Esempio n. 3
0
        /// <summary>
        /// Permet de dessiner une ligne dans la matrice
        /// </summary>
        /// <param name="p_ligne">Les coordonnées de la ligne dans la matrice</param>
        void DessinerLigne(Coordonnées p_ligne)
        {
            double deltaX = (p_ligne.PosX2 - p_ligne.PosX1);
            double deltaY = (p_ligne.PosY2 - p_ligne.PosY1);
            double m      = 0;

            if (Abs(deltaX) == 0)
            {
                DessinerLigneVertical(deltaY, p_ligne.PosY1, p_ligne.PosX1);
                return;
            }

            m = deltaY / deltaX;

            double b            = p_ligne.PosY1 - m * p_ligne.PosX1;
            double deltaUtilisé = (Abs(deltaX) >= Abs(deltaY) ? deltaX : deltaY);

            for (int i = 0; i != deltaUtilisé;)
            {
                if (deltaUtilisé == deltaX)
                {
                    Matrice[ToInt32(Round(m * (p_ligne.PosX1 + i) + b)), p_ligne.PosX1 + i] = CharRemplissage;
                }
                else
                {
                    Matrice[(p_ligne.PosY1 + i), ToInt32(Round((p_ligne.PosY1 + i - b) / m))] = CharRemplissage;
                }

                if (deltaUtilisé > 0)
                {
                    ++i;
                }
                else
                {
                    --i;
                }

                Matrice[p_ligne.PosY2, p_ligne.PosX2] = CharRemplissage;
            }
        }