Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Biblio_SDL] - Création d'une fonction

Pour générer des lignes : segments et droites

Sujet résolu
    2 juillet 2007 à 0:24:30

    Salut à tous !

    Alors voila je suis en train de programmer une fonction SDL qui a pour but de générer dans une fenêtre SDL une ligne (segment ou droite).

    Alors je me suis bien avancé et je dois avouer que je trouve face à une impasse. Il se trouve que, pour pouvoir tracer la droite, il faut d'abord deux points. Donc par exemple dans un repère orthonormé (O, I, J), A(1;1) et B(3;3).

    Je dois calculer le nombre de points se trouvant (approximativement), entre ses deux points. Pour ce faire, j'ai bien analyser, j'ai retenu deux méthodes :

    1° Méthode



    On commence par calculer le nombre d'antécédents se trouvant dans l'intervale d'abscisse 1 et 3 :-° . J'espère que vous me suivez ^^ .
    Ensuite, vous avez besoin de ces lignes de code pour comprendre


    struct Point
    {
            double x;
            double y;
    };


    Rien de méchant pour l'instant. Je fais donc le calcul sité au dessus, je tombe donc sur 3 - 1 égal 2. Ce nombre représente donc le nombre d'entiers se trouvant sur la droite et s'appelle coordXLine. Je fais ensuite ceci :

    Point *ptr_Surf = new Point[coordXLine*10];


    Ce qui alloue dynamiquement un tableau de 20 points.

    Ensuite, on fait une boucle for, on calcul l'ordonné de chacun des points grâce à la fonction affine déterminée par les deux points de départ, on les points de notre droites sont okay !

    Seulement voila, plusieurs problèmes : si je rentre par exemple A(7.5;2) et B(8.1;6), je me retrouve avec un tableau à dimention décimal o_O . Ce qui est bien entendu impossible. Donc je coince sur ce point de vue, dois-je arrondir à chaque fois ?

    2° Méthode



    Ce problème posé, j'ai tout de suite pensé au listes chaînées. Par exemple je pars d'un point, et tant que l'abscisse ,n'est pas égale à celle de l'autre point, alors on insére un nouveau point.


    Voila qu'en pensez-vous ?
    • Partager sur Facebook
    • Partager sur Twitter
      2 juillet 2007 à 5:41:10

      Google > algorithme de Bresenham
      • Partager sur Facebook
      • Partager sur Twitter
        2 juillet 2007 à 11:31:31

        Merci beaucoup mais je souhaite le créer moi-même.;,
        :)
        • Partager sur Facebook
        • Partager sur Twitter
          2 juillet 2007 à 11:47:34

          Pour le problème des décimaux tu peut arrondir à l'entier supérieur après tout le décalage ne se verrat pas avec la précision du pixel, si ?
          • Partager sur Facebook
          • Partager sur Twitter
            2 juillet 2007 à 12:04:56

            Ce que te propose Han Lee, l'algorithme de Bresenham, n'est pas une solution toute faite à ton problème. Il te faudra quand même coder toi-même.
            • Partager sur Facebook
            • Partager sur Twitter
            Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
              2 juillet 2007 à 12:41:54

              Alors tant mieux ^^

              Merci pour tout ! :)
              • Partager sur Facebook
              • Partager sur Twitter

              [Biblio_SDL] - Création d'une fonction

              × 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