IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

courbe de bezier


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 157
    Points : 54
    Points
    54
    Par défaut courbe de bezier
    Bonjour a tous j'ai un projet à faire pour les cours et je ne comprend pas très bien l'énoncé.
    Je doit dessiner la courbe de Bézier: pour vous rendre mieux compte aller à cette page: http:
    http://cours-info.iut-bm.univ-fcomte...jets1A.html#P3

    Je ne comprend pas quels points je doit placer au départ et quels points l'utilisateurs doit choisir.
    Je sais que ma question est un peu (voir même très) nul mais ça fait de nombreuses fois que je lis le sujet et voila
    merci d'avance de votre aide

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Points : 1 419
    Points
    1 419
    Par défaut
    l'utilisateur doit rentrer 4 points pour dessiner une courbe de bezier,
    et tu dois la dessiner avec l'algo decrit dans le sujet, qui se fait recursivement, tu devras ainsi trouver une condition qui arrete la recursion.

    ... bref je ne fais que re-ecrire ton exo ...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 157
    Points : 54
    Points
    54
    Par défaut
    ok merci bcp c'etait pas très clair pour moi.
    Bon maintenant j'ai dessiner tout les points qu'il fallait (les milieux, ....).
    Mais ya un truc que j'ai toujours pas compris c'est comment on peut faire la courbe avec ses point la.
    Donc si vous pourriez m'éclairer un peu ça serait génial
    merci d'avance

  4. #4
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    C'est tout l'interêt de la recursion....

    Ta courbe de bezier est définie par les points (A,B,C,D).

    C'est AUSSI la jonction de deux courbes de bezier: (A,E,H,J) et (J,I,G,D).
    Qui sont, à leur tour, la jonction de deux autres courbes...
    ....

    Reste à savoir quand s'arrêter


    En même temps, c'est stupide.... C'est une courbe cubique de bezier... donc un polynome de degré 3, genre:
    B(t) = A(1-t)^3 + 3B (1-t)^2 + 3C (1-t) +D t^3

    Mais bon... c'est pas le but de l'exercice je pense

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 157
    Points : 54
    Points
    54
    Par défaut
    ah ok merci, bon j'essaye et je vous retiens au courant

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 157
    Points : 54
    Points
    54
    Par défaut
    ben voila j'ai finit ce programme mais il y a un gros probleme je n'ai pas utiliser de recursivite et elle est obligatoire.
    Le pb c'est que moi et la récursivité ......
    Donc bon je voit pas trop comment faire ça
    dc un petit coup de main de nouveau serait super
    merci d'avance

  7. #7
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Comme je disais, le but de l'exercice, c'est la récursivité...

    Maintenant... Google "recursivité" te donnera plein de très bon liens expliquant ce que c'est, comment ca marche, et tu verras vite le lien avec mon précédent message

    D'autant que j'espere que tu n'as pas copié la fonction que j'indiquais vu qu'elle est fausse

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 157
    Points : 54
    Points
    54
    Par défaut
    ben enfaite google c'est la premiere chose que j'ai faites et ça ne m'a pas beaucoup plus aider: le principe je l'ai bien compris: tu appel la fonction dans la fonction; mais je n'arrive pas justement a trouver la fonction
    voila donc si vous pouvez me mettre sur la voie ce serait genial.
    merci d'avance

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 157
    Points : 54
    Points
    54
    Par défaut
    SVP juste quelques petites idées

  10. #10
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Là je trouve que tu exagères un peu... j'ai donné la fonction dans mon premier message:
    Ta courbe de bezier est définie par les points (A,B,C,D).

    C'est AUSSI la jonction de deux courbes de bezier: (A,E,H,J) et (J,I,G,D).
    Ca donne les paramètres et les appels récursifs....
    A part écrire le code pour toi... mais dans ce cas là ca ne t'apprendra rien !

  11. #11
    Expert éminent sénior
    Avatar de koala01
    Homme Profil pro
    aucun
    Inscrit en
    Octobre 2004
    Messages
    11 632
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : aucun

    Informations forums :
    Inscription : Octobre 2004
    Messages : 11 632
    Points : 30 714
    Points
    30 714
    Par défaut
    Salut,

    Le principe de la récursivité tiens en deux partie:
    • Appeler la fonction en modifiant un parametre
    • tester "le cas de base": celui qui force la fonction à sortir de la récursivité


    Typiquement, on pourrait généraliser une fonction récursive selon deux grosses idées, selon qu'elle doive ou non renvoyer une valeur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    type recursive1(type var,(....))
    {
        if(cas de base)//la valeur de la variable a atteind la limite d'appel récursif
        {
             return valeur finale; //(typiquement: 0 1 ou similaire)
        }
        (...) //actions à effectuer avant appel de la récursivité (si besoin)
        return recursive1(varmodifiée,(...));
    }
    void recursive2(type var, (...))
    {
        if(cas de base)
        {
            //si on fait quelque chose, en tout cas, on ne rappelle plus la fonction
        }
        else
        {
            //actions à effectuer avant appel de la récursivité (si besoin)
            recursive2(varmodifiée,(...));
            //actions à effectuer apres appel de la récursivité (si besoin)
        }
    }
    L'idée est donc:
    • de déterminer la valeur qui sert de cas de base
    • de déterminer la manière de modifier la valeur de manière à tendre vers le cas de bas

    En espérant que cette théorie te permette d'envisager plus sereinement la conception de la récursivité

    Dans le cas qui nous intéresse, on pourrait estimer qu'il devrait etre possible de déterminer, une tangeante pour tous les points qui forme la courbe en elle-meme, vu qu'il ne s'agit pas d'une série de lignes droites ... Et c'est là que la récursivité rentre en jeu

    je peux, enfin, te proposer un peu de lecture en vue de t'aider à "fixer" le principe

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Février 2007
    Messages : 57
    Points : 27
    Points
    27
    Par défaut
    Tu dois ecrire une fonction qui décompose la courbe A B C D en deux parties jusqu'à ce que la distance AD soit suffisamment petite pour être peu différente de la droite AD.

    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    void trace_bezier( A, B, C, D)
    {
        if ( distance(A, D) <= 2.0 )
              trace_droite (A,D);
        else
            {
            // calcul de A E H J  et J I G D selon shéma 
            // tracé de la première partie
            trace_bezier(A, E, H, J);
            // tracé de la 2ème partie
            trace_bezier( J, I, G, D);
            }
         return(0); // that's it !
    }
    Cordialement.
    Peter.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 157
    Points : 54
    Points
    54
    Par défaut
    merci à tous bon j'ai réusssi à finir ce programme (je n'ai pas pris ton code Peter mais merci tout de même)
    je vous envoi ce que j'ai fait des que l'on a atteint la date pour rendre le projet
    merci vraiment

Discussions similaires

  1. Les courbes de beziers, ou presque
    Par buzzkaido dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 22/10/2007, 13h40
  2. Recuperer coordonnees courbe de Bezier
    Par kitsune dans le forum OpenGL
    Réponses: 7
    Dernier message: 16/10/2007, 08h11
  3. Fermer une courbe de Bezier
    Par cjacquel dans le forum MFC
    Réponses: 2
    Dernier message: 15/05/2007, 13h21
  4. [vecteurs] dessiner les courbes de Bezier
    Par luta dans le forum Flash
    Réponses: 4
    Dernier message: 03/07/2006, 10h58
  5. Courbes de Beziers
    Par venomelektro dans le forum OpenGL
    Réponses: 10
    Dernier message: 23/12/2004, 01h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo