Partage
  • Partager sur Facebook
  • Partager sur Twitter

c# losange

boucle losange

    22 mars 2018 à 0:28:53

    salut je doit creer un losange dans un tableau 2D, ma fonction recoit en parametre un x et un y qui est le centre du losange et 1 rayon. je sais que je doit creer 2 boucle avec un if mais je n'arrive pas a trouver quoi mettre dans le if pour que le losange s'affiche comme il le faut merci.

    voici ce que j'ai a date

     int k = 1; //j'hesite si c'est 0 ou 1 qui doit etre la

                for (int i = y - rayon + 1; i <= y + rayon - 1; i++)

                {

                    for (int j = x - rayon + 1; j <= x + rayon - 1; j++)

                    {

                        if (i >= j - rayon - k && i <= j - rayon + k) //la ligne erroner

                            Tuiles[i, j] = tuile;

                    }

                    k++;

                }

    • Partager sur Facebook
    • Partager sur Twitter
      22 mars 2018 à 1:30:26

      Bonjour,

      Le message qui suit est une réponse automatique activée par un membre de l'équipe. Les réponses automatiques leur permettent d'éviter d'avoir à répéter de nombreuses fois la même chose ce qui leur fait gagner du temps et leur permet de s'occuper des sujets qui méritent plus d'attention plus facilement.
      Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter la personne en question par Message Privé.

      Pour plus d'informations, nous vous invitons à lire les règles générales du forum

      Merci d'utiliser les balises de code

      Les forums d'Openclassrooms disposent d'une fonctionnalité permettant de colorer et mettre en forme les codes source afin de les rendre plus lisibles et faciles à manipuler par les intervenants. Pour celà, il faut utiliser le bouton Image . Si vous utilisez l'éditeur de messages en mode Markdown, il faut utiliser les balises <pre class="brush: c;">Votre code ici</pre>.

      Merci de modifier votre message en conséquence via le bouton "Modifier" situé sur son coin supérieur droit, sans quoi le sujet sera fermé.

      • Partager sur Facebook
      • Partager sur Twitter

      Moderateur forum || FAQ 3D || discord 3D francophone || OC Tweak script

        22 mars 2018 à 16:17:03

        Vous avez une idée de l'algorithme de tracé de droite sur espace discret que vous comptez utiliser ?

        Non, parce que c'est pas le genre d'algorithme qu'on bricole après une biture à 3 heures du matin.

        • Partager sur Facebook
        • Partager sur Twitter
        Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
          22 mars 2018 à 17:05:34

          Perso faudra m'expliquer comment on peut avoir un losange avec seulement un point et un rayon ; un cercle, un carré à la rigueur mais un losange ??
          • Partager sur Facebook
          • Partager sur Twitter
          Censément, quelqu'un de sensé est censé s'exprimer sensément.
            22 mars 2018 à 17:14:58

            Un carré n'est pas un losange particulier ?
            • Partager sur Facebook
            • Partager sur Twitter
            Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
              22 mars 2018 à 17:37:58

              tu chipotes là ; tu vois où je veux en venir ; pour faire DES losanges (et pas juste un qui est particulier) y'a pas assez d'infos (où il me manque une notion de maths
              • Partager sur Facebook
              • Partager sur Twitter
              Censément, quelqu'un de sensé est censé s'exprimer sensément.
                22 mars 2018 à 18:39:23

                bacelar a écrit:

                Vous avez une idée de l'algorithme de tracé de droite sur espace discret que vous comptez utiliser ?

                Non, parce que c'est pas le genre d'algorithme qu'on bricole après une biture à 3 heures du matin.


                je suis au quebec j'ai ecrit ce message a 18h^^

                Sehnsucht a écrit:

                Perso faudra m'expliquer comment on peut avoir un losange avec seulement un point et un rayon ; un cercle, un carré à la rigueur mais un losange ??

                le rayon est la longuer entre le centre du losange et  de tout les extremitée

                par example : un rayon de 3 (donc 3 du point rouge jusqu'au point en bleu)

                   *

                 ***

                *****

                 ***

                   *

                -
                Edité par AlexRichard4 22 mars 2018 à 18:45:08

                • Partager sur Facebook
                • Partager sur Twitter
                  22 mars 2018 à 18:58:19

                  Un losange ayant la longueur de son grand axe égale à la longueur de son petit axe est un carré.

                  En gros, vous cherchez à dessiner un carré ayant ces cotés faisant un angle de Pi/2 radian avec les axes du repère.

                  "Graphiquement", c'est peut-être un losange parce qu'une fenêtre en mode console n'est pas un isomorphisme, mais pour votre programme, on s'en cogne, c'est un carré.

                  Reste à savoir s'il est plain ou pas (en wireframe), mais bon, c'est comme le reste, lisez l'algo. avant de l'implémenter.

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                    22 mars 2018 à 19:03:48

                    dans le fond je doit litteralement coller 2 triangle isocele dos a dos mais je ne sais pas quoi mettre comme condition

                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 mars 2018 à 19:20:36

                      >dans le fond je doit litteralement coller 2 triangle isocele

                      Alors il vous faut plus que juste 1 rayon, il faut la hauteur du triangle et la largeur de la base du triangle isocèle.

                      Si vous n'avez pas les bonnes conditions de départ, vous n'arriverez à rien.

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                        24 mars 2018 à 18:10:49

                        bacelar a écrit:

                        >dans le fond je doit litteralement coller 2 triangle isocele

                        Alors il vous faut plus que juste 1 rayon, il faut la hauteur du triangle et la largeur de la base du triangle isocèle.

                        Si vous n'avez pas les bonnes conditions de départ, vous n'arriverez à rien.

                        la largeur c'est 2*le rayon -1

                        • Partager sur Facebook
                        • Partager sur Twitter
                          27 mars 2018 à 16:46:01

                          Et, au vu de votre exemple qui a une "largeur" de "rayon = 3" égale à 5, la hauteur est aussi "2*le rayon -1" => 5.

                          On retombe donc sur un "carré" plongé dans un espace non isomorphe, "losangifié" dû à la différence du nombre de pixel en hauteur versus en largeur d'une cellule d'affichage d'un caractère dans la console.

                          La déformation, c'est pas vos noisettes. Affichez "logiquement" un carré tourné de 45°, c'est juste une histoire de décaler d'un caractère le début et la fin des index d'affichage des "*".

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                            5 avril 2018 à 0:05:02

                            bacelar a écrit:

                            Et, au vu de votre exemple qui a une "largeur" de "rayon = 3" égale à 5, la hauteur est aussi "2*le rayon -1" => 5.

                            On retombe donc sur un "carré" plongé dans un espace non isomorphe, "losangifié" dû à la différence du nombre de pixel en hauteur versus en largeur d'une cellule d'affichage d'un caractère dans la console.

                            La déformation, c'est pas vos noisettes. Affichez "logiquement" un carré tourné de 45°, c'est juste une histoire de décaler d'un caractère le début et la fin des index d'affichage des "*".

                            je sais, c'est jusstement ce que je n'arrive pas a faire car je ne trouve pas le bon if()



                            • Partager sur Facebook
                            • Partager sur Twitter
                              5 avril 2018 à 1:22:27

                              Y'a pas besoin de if
                              • Partager sur Facebook
                              • Partager sur Twitter
                              Censément, quelqu'un de sensé est censé s'exprimer sensément.
                                5 avril 2018 à 3:09:25

                                Sehnsucht a écrit:

                                Y'a pas besoin de if

                                possible, moi je le voyais comme un gros carre ou on enlevais 4 petit triangle dans les coins, il fallais donc 2 for pour former le carre et un if dans le 2eme for pour les triangle a enlever. bien sur si tu voit une maniere fait moi signe^^

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  5 avril 2018 à 4:49:26

                                  C'est peut être plus simple de le voir comme 2 triangles empilés, le 2ème "tête en bas" comme le nombre d'espaces et d'étoiles dépend uniquement du "numéro" de ligne
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Censément, quelqu'un de sensé est censé s'exprimer sensément.
                                    5 avril 2018 à 11:24:38

                                    Et le nombre de caractère à afficher sur chaque ligne est le même :

                                    Un certain nombre de caractères espace, puis un certain nombre de caractères *, puis un certain nombre de caractères espace

                                    Ces "certains nombres" n'est fonction que du numéro de ligne.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                                      5 avril 2018 à 11:42:31

                                      J'avais même pas vu qu'il s'agissait de remplir un tableau 2D (j'étais parti sur de l'affichage console, du coup je pigeais la nécessité des espaces après)

                                      Avec cette "contrainte" là, une autre approche possible, t'as juste à faire un quart du losange (soit un carré avec une moitié d'espace et l'autre d'étoiles selon la diagonale) ; le reste c'est que des symétries.

                                      Je me demande aussi s'il y aurait pas moyen de faire ça avec une matrice de rotation...

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Censément, quelqu'un de sensé est censé s'exprimer sensément.
                                        10 avril 2018 à 21:26:52

                                        perso j'ai aucune idee c quoi une matrice de rotation...
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          13 avril 2018 à 12:34:03

                                          >perso j'ai aucune idee c quoi une matrice de rotation...

                                          b.a.-ba de la 3D, et des espaces vectoriels en mathématiques.

                                          Mais ici, vous n'avez pas besoin de sortir l'artillerie lourde.

                                          Vous n'avez qu'à calculer le nombre d'espace et de "*" à imprimer par ligne, en fonction de l'indice de la ligne.

                                          A l'arrache :

                                          const int rayon = 3;
                                          
                                          for (int i = 0; i < 2 * rayon + 1; i++)
                                          {
                                              Console.Write(new string(' ', Math.Abs(rayon - i)));
                                              Console.WriteLine(new string('*', (2 * rayon + 1) - Math.Abs(-2 * (rayon - i))));
                                          }



                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Je recherche un CDI/CDD/mission freelance comme Architecte Logiciel/ Expert Technique sur technologies Microsoft.
                                            17 avril 2018 à 21:05:35

                                            bon finalement sa m'a donner ca (c'est pas exactement se que je vous avais decrit il avais d'autre condition^^

                                            for (int i = 0; i < Tuiles.GetLength(1) - 1; i++)
                                                        {
                                                            for (int j = 0; j < Tuiles.GetLength(0) - 1; j++)
                                                            {
                                                                if (Math.Abs(x - i - 1) + Math.Abs(y - j - 1) <= rayon - 1)
                                                                {
                                                                    Tuiles[j, i] = tuile;
                                                                }
                                            
                                                            }
                                                        }



                                            • Partager sur Facebook
                                            • Partager sur Twitter

                                            c# losange

                                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                            • Editeur
                                            • Markdown