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

Mathématiques Discussion :

Courbe de Bézier


Sujet :

Mathématiques

  1. #1
    En attente de confirmation mail
    Étudiant
    Inscrit en
    Août 2007
    Messages
    419
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 419
    Points : 263
    Points
    263
    Par défaut Courbe de Bézier
    Bonjour à vous,

    je suis débutante en infographie et je dois revoir et comprendre plusieurs concepts de base pour pouvoir avancer en ce domaine.


    pouvez vous m'expliquer s'il vous plait, comment résoudre un problème de courbe de Bézier, le voici:

    On considère les deux lignes brisées (p0, p1, p2, p3) et (p3, p4, p5, p6), définies par les points p0....p6 donnés par:

    p0=(1, 0)
    p1=(3, -1)
    p3=(2, 4)
    p4=(-1, 4)
    p5=(2, 2)
    p6=(0, 1)


    On voudrait approximer chacune de ces deux lignes par une courbe de bézier à 4 points de contrôle, tel que:

    -C1(t) est l'équation de la courbe approximant (p0, p1, p2, p3)
    -C2(t) est l'équation de la courbe approximant (p3, p4, p5, p6)

    Donner les équation de C1(t) et C2(t)

    La matrice de base associée aux courbes de bézier est

    M=
    -1 3 -3 1
    3 -6 3 0
    -3 3 0 0
    1 0 0 0

    merci de me montrer la technique pour C1(t)

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par acacia Voir le message
    merci de me montrer la technique pour C1(t)
    sous forme matricielle:

    C1(t) = T x M x P

    avec,
    T = (t^3,t^2,t,1) [transposé]
    M = la matrice de ton post
    P = (p0,p1,p2,p3) [transposé]

    c'est a dire:

    C1(t) = P0(-t^3 + 3t^2 - 3t + 1) + P1(3t^3 - 6t^2 + 3t) + P2(-3t^3 + 3t^2) + P3(t^3)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    En attente de confirmation mail
    Étudiant
    Inscrit en
    Août 2007
    Messages
    419
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 419
    Points : 263
    Points
    263
    Par défaut
    Bonjour pseudocode,

    merci pour la réponse

    je trouve un petit problème au niveau de la syntaxe, je ne sais pas si c'est juste ou non, je l'ai écrite sous forme d'équation paramétrique

    X(t) = -5^3 - 6t^2 + 6t + 1
    Y(t) = -2^3 + 12t^2

    (une rectification, j'ai oublié de mentionner les paramètres du point P2=(3,2))

  4. #4
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par acacia Voir le message
    je trouve un petit problème au niveau de la syntaxe, je ne sais pas si c'est juste ou non, je l'ai écrite sous forme d'équation paramétrique
    Oui, c'est ca.

    La formule doit etre appliquée sur chaque coordonnées X et Y, ce qui donne dans ton exemple:

    C1[x,y](t) = [1, 0]*(-t^3 + 3t^2 - 3t + 1) + [3,-1]*(3t^3 - 6t^2 + 3t) + [3,2]*(-3t^3 + 3t^2) + [2,4]*(t^3)

    C'est a dire:

    Code C1 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    x(t) = 1*(-t^3 + 3t^2 - 3t + 1) + 3*(3t^3 - 6t^2 + 3t) + 3*(-3t^3 + 3t^2) + 2*(t^3)
         = t^3 - 6t^2 + 6t +1
     
    y(t) = 0*(-t^3 + 3t^2 - 3t + 1) + -1*(3t^3 - 6t^2 + 3t) + 2*(-3t^3 + 3t^2) + 4*(t^3)
         = -5t^3 + 12t^2 -3t

    on peut verifier que C1(0)=P0 et C1(1)=P3

    (sauf erreur de calcul... )
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  5. #5
    En attente de confirmation mail
    Étudiant
    Inscrit en
    Août 2007
    Messages
    419
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 419
    Points : 263
    Points
    263
    Par défaut
    je te remercie pseudocode pour ta patience

    j'ai fait une erreur lors de mes calculs

    tout est clair maintenant, j'ai bien compris la méthode et je serai capable de le refaire pour C2(t)

    encore merci

  6. #6
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par acacia Voir le message
    je te remercie pseudocode pour ta patience (...) encore merci
    De rien. Bonne journée
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  7. #7
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par x2bf3 Voir le message
    Bonjour, je souhaiterais tracer une courbe de baisier "segment par segment". Pour cela, existe t'il une maniére plus simple de tracer une telle courbe ( en 4 points P1, P2, P3, P4) en ayant au final une expression de type Y(x) ?
    SAuf cas particulier, non on ne peut pas avoir une equation de la forme Y=F(X) car les courbes de bezier peuvent faire des boucles, et donc pour un X donné on a plusieurs Y. C'est pour ce la qu'on utilise la forme parametrée

    Citation Envoyé par x2bf3 Voir le message
    Et qu'est ce que peux bien repésenter ce "t" !
    Le "t" c'est justement le parametre. En faisant varier ce parametre entre 0 et 1, tu dessines progressivement la courbe de bezier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    pas:= 0.1  // précision du dessin
     
    FOR t=0 TO 1 STEP pas
      x := P0.x*(-t^3 + 3t^2 - 3t + 1) + P1.x*(3t^3 - 6t^2 + 3t) + P2.x*(-3t^3 + 3t^2) + P3.x*(t^3)
      y := P0.y*(-t^3 + 3t^2 - 3t + 1) + P1.y*(3t^3 - 6t^2 + 3t) + P2.y*(-3t^3 + 3t^2) + P3.y*(t^3)
      plot(x,y)
    NEXT t
    - Pour t=0, tu as le premier point de la courbe (qui est confondu avec le point P0).
    - Pour t=1, tu as le dernier point de la courbe (ui est confondu avec le point P3).
    - Pour 0<t<1, tu as les points intermédiaires de la courbe.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  8. #8
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par x2bf3 Voir le message
    Je vien de le constater en le plotant sur maple, mais la question reste entière !

    Je ne me souviens plus de l'algo pour calculer par itération une équation de type a.x^3+b.x^2+c.x+d=e en exprimant x=...

    Il existe une methode, surement avec le pivot de gauss mais je ne m'en rapelle plus ...

    Cette methode me donnerais l'exacte valeure de t dans la ligne matricielle des posts précédents.
    Si tu cherches a trouver "t" pour un X donné, il faut résoudre l'equation de degré 3 => Methode de cardan
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  9. #9
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Points : 92
    Points
    92
    Par défaut
    Bonjour,

    j'ai poster un sujet http://www.developpez.net/forums/d90...e-bezier-java/

    et j'ai bien dessiner cette courbe
    mais quand j'ai vu ce sujet j'ai voulu demander si je définit
    x(t) et y(t)
    est ce que c'est possible de dessiner une courbe de bezier à partir de n points de contrôle ?

  10. #10
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par azertyuio Voir le message
    Bonjour,

    j'ai poster un sujet http://www.developpez.net/forums/d90...e-bezier-java/

    et j'ai bien dessiner cette courbe
    mais quand j'ai vu ce sujet j'ai voulu demander si je définit
    x(t) et y(t)
    est ce que c'est possible de dessiner une courbe de bezier à partir de n points de contrôle ?
    Avec "n" points de controle, on peut définir UNE COURBE de bezier d'ordre "n-1" passant par le 1er et le dernier point.

    On peut aussi faire UNE SPLINE de bezier en mettant bout à bout des courbes d'ordre 2 ou 3.
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  11. #11
    Membre régulier
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    151
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 151
    Points : 92
    Points
    92
    Par défaut
    oui je sais mais j'arrive pas en java car il me dessine uniquement les bezier de 4 points.

  12. #12
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Points : 16 081
    Points
    16 081
    Par défaut
    Citation Envoyé par azertyuio Voir le message
    oui je sais mais j'arrive pas en java car il me dessine uniquement les bezier de 4 points.
    Seules le courbes de Bezier d'ordre 2 et 3 sont implémentées en java (java.awt.geom). Pour les ordres supérieurs, il faut calculer soi-même la courbe point par point (polygone de Bernstein, ou algo de deCasteljau)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Courbes de bézier & sprites 3D
    Par Cpl.Bator dans le forum PureBasic
    Réponses: 1
    Dernier message: 24/02/2008, 20h53
  2. Courbes de bézier sous CSS 2?
    Par sirbaldur dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 18/09/2007, 15h27
  3. Position sur une Courbe de Bézier
    Par Kurisu dans le forum Mathématiques
    Réponses: 2
    Dernier message: 29/06/2007, 07h49
  4. recherche doc sur les courbe de bézier
    Par amaury pouly dans le forum OpenGL
    Réponses: 4
    Dernier message: 29/04/2003, 22h41

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