Segment entre 2 points - SDL
Répondre à la discussion
Affichage des résultats 1 à 22 sur 22

Segment entre 2 points - SDL



  1. #1
    ppetienne44

    Segment entre 2 points - SDL


    ------

    Bonjour a tous,
    j'aurai voulu savoir si il existait une bibliothèque qui me permettrait de tracer un segment entre deux points de la largeur que je souhaite en C avec SDL ?
    Merci

    -----

  2. #2
    Dlzlogic

    Re : Segment entre 2 points - SDL

    Bonjour,
    J'ai déjà eu l'occasion de me poser la question, la seule méthode que j'ai trouvée est de tracer des parallèles au segment AB.

  3. #3
    ppetienne44

    Re : Segment entre 2 points - SDL

    D'accord, merci et pour faire un segment entre deux points, il y a une fonction qui le fait ou il faut jouer avec les maths pour le faire ?

  4. #4
    Dlzlogic

    Re : Segment entre 2 points - SDL

    Là, de toute façon, pour faire du dessin, il faut une bibliothèque graphique.
    Apparemment, SDL permet du graphique, il semble même que ce soit sa spécialité.
    Faites une recherche de "Moveto" puis "Lineto", vous devriez trouver votre bonheur.

  5. A voir en vidéo sur Futura
  6. #5
    Jack
    Modérateur

    Re : Segment entre 2 points - SDL

    A mon avis drawline()

    A+

  7. #6
    ppetienne44

    Re : Segment entre 2 points - SDL

    J'ai trouvé une bibliothèque qui s'appelle SDL_Draw seulement, je n'arrive pas à l'installer avec Code::Blocks avec ce lien http://sdl-draw.sourceforge.net/ !
    Pouvez vous me donner les démarches pour l'installer ?

  8. #7
    ppetienne44

    Re : Segment entre 2 points - SDL

    Pas la peine de bibliothèque :

    Code:
    void Draw_Lines(int x1,int x2,int y1,int y2)
    {
    double x = x2 - x1;
    double y = y2 - y1;
    double length = sqrt( x*x + y*y );
    
    double addx = x / length;
    double addy = y / length;
    
    x = x1;
    y = y1;
    
    for(double i = 0; i < length; i += 1)
    {
    
      setPixel( (int)x, (int)y, SDL_MapRGB(screen->format, 0x00, 0x00, 0x00) );
      x += addx;
      y += addy;
    }
    }
    
    void setPixel(int x, int y, Uint32 coul)
    {
        if(x>=0 && y>=0)
      *((Uint32*)(screen->pixels) + x + y * screen->w) = coul;
    }
    Enjoy !
    Dernière modification par JPL ; 14/02/2013 à 22h33. Motif: Ajout de la balise Code (#) pour garder l'indentation

  9. #8
    Dlzlogic

    Re : Segment entre 2 points - SDL

    Un peu surprenant, mais, bon, si vous êtres content, tout va bien.

  10. #9
    ppetienne44

    Re : Segment entre 2 points - SDL

    Qu'est ce qui ne va pas ?

  11. #10
    Jack
    Modérateur

    Re : Segment entre 2 points - SDL

    je suppose que Dlzlogic est un peu surpris qu'il faille récrire les fonctions de la librairie graphique. Il doit bien exister une fonction qui dessine un trait dans la SDL.

    A+

  12. #11
    polo974

    Re : Segment entre 2 points - SDL

    En fait sdl s'occupe en gros des rectangles pour construire des contenus d'écran (coté affichage...).

    Pour remplir ces rectangles, il faut utiliser des librairies genre sdl_image, sdl_gfx, sdl_svg ou autre...
    Jusqu'ici tout va bien...

  13. #12
    Dlzlogic

    Re : Segment entre 2 points - SDL

    Bonjour,
    Jr ne connais pas la SDL, j'ai jeté un coup d'oeil sur le net, mais pas plus.
    En tout cas, il existe des librairies graphiques en C, gratuites et certainement très efficaces (qt ou un nom comme ça).
    Intellectuellement, c'est intéressant de réinventer la roue, mais il on veut se déplacer rapidement, il vaut mieux prendre un vélo, et si on a des sous, acheter une voiture.

  14. #13
    ppetienne44

    Re : Segment entre 2 points - SDL

    Je suis bien d'accord avec vous, mais pourquoi utiliser une librairie dont la plupart des fonctions sont inutiles pour moi ? C'est donc aussi bien d'avoir le code de la fonction, au moins je sais comment cette fonction fonctionne ... apres c'est mon avis

  15. #14
    Dlzlogic

    Re : Segment entre 2 points - SDL

    Citation Envoyé par ppetienne44 Voir le message
    Je suis bien d'accord avec vous, mais pourquoi utiliser une librairie dont la plupart des fonctions sont inutiles pour moi ? C'est donc aussi bien d'avoir le code de la fonction, au moins je sais comment cette fonction fonctionne ... apres c'est mon avis
    Bonsoir,
    Par exemple, voila une raison : vous allez tracer un polygone fermé, constitué de plusieurs côté. Pour faire joli, vous aurez envie d'y mettre une couleur rouge. Là le drame, il y aura un trou dans un des segments et votre écran sera en totalité rempli de rouge.
    Il y a très longtemps, j'ai vu l'algorithme qui dessine un segment. J'avoue que je n'ai jamais essayé de faire une telle fonction moi-même.
    Il y a des quantités de cas en informatique où il est important de refaire les choses soi-même. La tendance actuelle est exactement contraire, c'est à dire qu'on utilise des fonctions très sophistiquées (langages de haut niveau), ce qui produit les exécutables énormes. Manifestement vous prenez l'option inverse. En tout cas, en matière de graphisme, je déconseille absolument de réécrire les fonctions les plus élémentaires, mais très difficiles, soi-même.
    Je voudrais citer un exemple très simple : on veut résoudre un système linéaire de n équations à n inconnues.
    La méthode que je trouve "normale" consiste à faire le calcul en utilisant des méthodes connues comme le pivot de Gauss.
    La méthode que l'on observe consiste à dire qu'on travaille avec des matrices, on inverse les matrices, on fait du produit de matrice etc.
    Enfin c'est mon avis.

  16. #15
    Chanur

    Re : Segment entre 2 points - SDL

    Bonsoir,
    Citation Envoyé par ppetienne44 Voir le message
    Je suis bien d'accord avec vous, mais pourquoi utiliser une librairie dont la plupart des fonctions sont inutiles pour moi ? C'est donc aussi bien d'avoir le code de la fonction, au moins je sais comment cette fonction fonctionne ... apres c'est mon avis
    Une autre raison est que SDL attaque directement la carte video, en utilisant les primitives d'un processeur spécialisé. C'est plus rapide qu'un tracé point par point tout en ne dépensant pas de temps de calcul du processeur central.
    Et puis ça fait un programme plus petit (Il y a toujours cette fonction-là en moins).

    A+
    Ce qui se conçoit bien s'énonce clairement ; et les mots pour le dire arrivent aisément.

  17. #16
    polo974

    Re : Segment entre 2 points - SDL

    Citation Envoyé par ppetienne44 Voir le message
    Je suis bien d'accord avec vous, mais pourquoi utiliser une librairie dont la plupart des fonctions sont inutiles pour moi ?
    ...
    ne serait-ce que pour éviter ça:
    Code:
    double length = sqrt( x*x + y*y );
    et ça:
    Code:
    for(double i = 0; i < length; i += 1)
    alors qu'il n'y a nul besoin de flottant et de racine carrée (vous connaissez le prix d'une racine carrée ? ? ?).
    Jusqu'ici tout va bien...

  18. #17
    doul11

    Re : Segment entre 2 points - SDL

    Bonsoir,

    Citation Envoyé par ppetienne44 Voir le message
    Je suis bien d'accord avec vous, mais pourquoi utiliser une librairie dont la plupart des fonctions sont inutiles pour moi ? C'est donc aussi bien d'avoir le code de la fonction, au moins je sais comment cette fonction fonctionne ... apres c'est mon avis

    Et bien moi je dis que l'on fait ce que l'on veut tant que ça fonctionne et que ça correspond a ce dont on a besoin !

    Pour la petite histoire il y a quelques temps j'ai cherché une librairie de rendu graphique 2D, un truc tout simple, et bien je n'en ai pas trouvé de bien, des usines a gaz avec toujours 50 paramètres a régler pour afficher un pauvre graphique, il y a en a certaines pour seulement arriver a compiler est déjà un exploit ! Donc de la colère j'ai fait ma propre librairie, une surcouche Xlib pour les fenêtres, les I/O, une surcouche Freetype pour des joli texte, plus d'autres fonctionnalités. Maintenant pour faire un graphique c'est 5 lignes de code, ça fait ce que je veut comme je le veut.

    Ce que j'ai fait est certainement très très loin d'être parfait mais ça fonctionne, sinon je fait comment ? j'attends que quelqu'un sorte un librairie qui correspond a ce que je veut ? De toute façon c'est très formateur comme expérience, même si ça montre ce qu'il ne faut pas faire, au moins après on sait bien pourquoi c'est pas bon.
    Dernière modification par doul11 ; 20/02/2013 à 20h44.
    La logique est une méthode systématique d’arriver en confiance à la mauvaise conclusion.

  19. #18
    Dlzlogic

    Re : Segment entre 2 points - SDL

    Oui, je comprends bien votre colère.
    Le cas présent concerne une fonction de très-très bas niveau.
    Je crois réellement qu'il faut prendre dans les bibliothèques les fonctions de base et non les fonctions sophistiquées.
    Cet exemple de dessin de segments me parait assez intéressant.
    Imaginons que l'on cherche à dessiner un arc de cercle. On a la solution qui consiste, si elle existe, à utiliser une fonction qui pourrait s'appeler DessArc(), il y a aussi la solution qui consiste à se dire que un arc peut être une succession de segments.
    J'ai évoqué cet aspect des choses avec mon exemple de résolution d'un système linéaire.
    Je suis prêt à discuter de ce point dans les détails. En fait mon propos consiste à dire qu'il faut trouver la limite entre "tout refaire" et " utiliser à bon escient ce qui existe".

    Je me demande si vous faites allusions à des bibliothèques qui dessine des courbes représentatives de fonctions. Si c'est le cas, il me parait évident que ce type de traitement ne doit pas se faire à partir de bibliothèques existantes, et alors il ne s'agit pas du problème évoqué par le présent sujet.

  20. #19
    softelectro

    Re : Segment entre 2 points - SDL

    Salut à tous

    Pour moi une ligne est une surface rectangulaire donc la largeur vaut 1 pixel. (voir SdZ : http://www.siteduzero.com/informatiq...degradehttp://)

    En espérant vous avoir aidé

  21. #20
    Dlzlogic

    Re : Segment entre 2 points - SDL

    Citation Envoyé par softelectro Voir le message
    Salut à tous

    Pour moi une ligne est une surface rectangulaire donc la largeur vaut 1 pixel. (voir SdZ : http://www.siteduzero.com/informatiq...degradehttp://)

    En espérant vous avoir aidé
    Pardon de dire mon avis, sans hésitation et sans contours diplomatique, mais cela me parait une hérésie.
    1- une ligne est constituée de segments et d'arc de cercles, de parabole etc.
    2- si on veut épaissir la ligne, on trace des parallèles
    3- un segment est une portion de ligne droite limitée par 2 points
    4- une surface est une zone délimitée par une ligne
    5- un rectangle est une zone constituées de 4 segments parallèles et perpendiculaire 2 à 2. En dessin informatique lorsqu'on parle de rectangle, c'est presque toujours lorsque les côtés sont verticaux et horizontaux.

    Il serait intéressant de savoir si votre suggestion vient du site du zéro, ou si c'est juste votre idée personnelle. D'ailleurs, d'après ce que j'ai vu sur votre lien, c'est plutôt un rectangle qui est tracé par une succession de segments, en utilisant la fonction rectangle pour une raison que j'ignore (flemme de lire tout l'article)
    Actuellement il y a une discussion en cours sur les qualité nécessaires pour être informaticien

  22. #21
    softelectro

    Re : Segment entre 2 points - SDL

    Salut,

    Il serait intéressant de savoir si votre suggestion vient du site du zéro, ou si c'est juste votre idée personnelle
    En effet, la problématique de dessiner un segment m'a rappelé le tutorial du SdZ sur la mise en place d'un dégradé.
    D'après d'autre recherche, cette parade ne marche que si le rectangle est en position horizontal ou vertical.

    Je joint donc un autre lien qui donne un code assez complet sur l'affichage d'un segment en SDL.
    http://anomaly.developpez.com/tutoriel/sdl/partie2/

  23. #22
    Dlzlogic

    Re : Segment entre 2 points - SDL

    Citation Envoyé par softelectro Voir le message
    Salut,

    En effet, la problématique de dessiner un segment m'a rappelé le tutorial du SdZ sur la mise en place d'un dégradé.
    D'après d'autre recherche, cette parade ne marche que si le rectangle est en position horizontal ou vertical.

    Je joint donc un autre lien qui donne un code assez complet sur l'affichage d'un segment en SDL.
    http://anomaly.developpez.com/tutoriel/sdl/partie2/
    Bonjour,
    Donc, je retire toutes les méchancetés que j'ai dites, et je vous prie de m'excuser.
    Bon, effectivement si cette bibliothèque graphique ne dispose pas de la fonction Line() ou LineTo() quelle que soit l'écriture, de quoi dispose-t-elle ?

Discussions similaires

  1. Nombre de points d'un segment
    Par kaderben dans le forum Mathématiques du supérieur
    Réponses: 15
    Dernier message: 16/07/2016, 18h22
  2. formule de segment a partir des 2 points qui le definissent ?
    Par invite27b792fa dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 26/11/2009, 09h53
  3. Points+segment
    Par Jack Burner dans le forum Physique
    Réponses: 1
    Dernier message: 17/12/2008, 09h52
  4. Quantification des points d'un segment...
    Par SPH dans le forum Mathématiques du supérieur
    Réponses: 55
    Dernier message: 15/02/2005, 21h26
  5. recherche schema entre clavier et affichage 7 segment
    Par invitec31e46a7 dans le forum Électronique
    Réponses: 2
    Dernier message: 29/11/2004, 13h33