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 :

Calcul coordonnée d'objet en mouvement


Sujet :

Mathématiques

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 7
    Points
    7
    Par défaut Calcul coordonnée d'objet en mouvement
    Bonjour,

    Avant tout je tiens a préciser que les valeurs calculer sont misent dans un tableau et utilisées ultérieurement.

    - Dans un environnement 3D je récupère des coordonnées que j'ai généré en me baladant dans cet environnement.
    - Si on relie ces points sur une feuille de papier, ça nous fait des segments de droites.
    - Moi je calcul les points intermédiaires pour avoir les parcours que ferai un objet s'il aller d'un point à un autre.
    - Mais j'ai constaté que si j'applique ces coordonnées à un objet , que le passage d'un segment à l'autre est " Cassé " ou " Brutal "

    Donc je voudrai ajouter un algo style bezier pour " arrondir " les angle entre les segments pour rendre le mouvement plus jolie, mais pour tout vous dire je ne sais pas comment faire.


    Exemple simple sans Z:

    1er coordonnée : x0 = 10; y0=-4
    2em coordonné : x1 = 27; y1 = 9
    3em coordonné : x2 = -11; y2 =34
    etc

    Donc je relie mes point en calculant les points intermédiaire, et c'est la qu'il faudrait que j'ajoute un algo ( bezier ? ) pour " adoucir " les angles.

    Pourriez vous m'aider ?

    Merci

  2. #2
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 132
    Points : 89
    Points
    89
    Par défaut
    Des splines ?

  3. #3
    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 084
    Points
    16 084
    Par défaut
    Citation Envoyé par alt3
    Des splines ?
    +1

    simple: splines cubiques naturelles (derivées secondes = 0)

    mieux: splines cubiques

    encore mieux: NURBS

  4. #4
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 132
    Points : 89
    Points
    89
    Par défaut
    +1 avec les autres propositions

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Absolument.

    Spline est le mieux car PASSE par les points.

    Béziers ne passe pas par les points...

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Merci pour vos réponse.
    Après quelques recherches sur le net j'ai pu voir que les interpolations d'hermites permettent d'obtenir ce que je veux par contre après avoir essayé d'appliquer les formules, je me suis aperçu que j'avais un problème dans les résultats.

    Pour visualiser le résultat j'ai fait un petit soft vite fait en VB.Net et j'ai pu voir que le résultat ne correspondait pas du tout à ce qu'on voit ici:
    http://communaute.mangue.org/e107_pl...id=cours2.html

    Je pense que je me suis planté en appliquant les formules.
    J'ai calculé x puis y et j'ai tracé mes points et je pense que c'est dans la boucle qui calcul les points que j'ai commis une erreur.

    Pourriez vous m'aider à appliquer ces formules sur x et y correctement ?

    Merci

  7. #7
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 132
    Points : 89
    Points
    89
    Par défaut
    Citation Envoyé par pkpas
    Merci pour vos réponse.
    Après quelques recherches sur le net j'ai pu voir que les interpolations d'hermites permettent d'obtenir ce que je veux par contre après avoir essayé d'appliquer les formules, je me suis aperçu que j'avais un problème dans les résultats.

    Pour visualiser le résultat j'ai fait un petit soft vite fait en VB.Net et j'ai pu voir que le résultat ne correspondait pas du tout à ce qu'on voit ici:
    http://communaute.mangue.org/e107_pl...id=cours2.html

    Je pense que je me suis planté en appliquant les formules.
    J'ai calculé x puis y et j'ai tracé mes points et je pense que c'est dans la boucle qui calcul les points que j'ai commis une erreur.

    Pourriez vous m'aider à appliquer ces formules sur x et y correctement ?

    Merci
    Bah poste ton algo, et ton implémentation pour voir ce que tu foires.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Ok
    j'ai fait un test vite fait pour voir ce que ça donne et voilà ce que j'ai appliqué:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
     
     
    .... cut ....
            Dim Tens As Single = TextBox2.Text ' Tension
            Dim C As Single = TextBox3.Text 'Continuite
            Dim B As Single = TextBox4.Text  ' Tendance ("bias")
    .... cut ....     
            x0 = MyValueX(i)
            y0 = MyValueY(i)
            xMoins = MyValueX(i + 1) ' Si 1er noeud 
            yMoins = MyValueY(i + 1) ' Si 1er noeud
     
       For i = 0 To 10 - 1
                x1 = MyValueX(i + 1)
                y1 = MyValueY(i + 1)
     
                Try
                    xMoins = MyValueX(i - 1)
                    yMoins = MyValueY(i - 1)
                Catch ex As Exception
     
                End Try
                For temps = 0 To 10
            ' Les tangentes
                    Te = (((1 - Tens) * (1 - C) * (1 + B)) / 2) * (x0 - xMoins) + (((1 - Tens) * (1 + C) * (1 - B)) / 2) * (x1 - x0)
                    Ts = (((1 - Tens) * (1 + C) * (1 + B)) / 2) * (x0 - xMoins) + (((1 - Tens) * (1 - C) * (1 - B)) / 2) * (x1 - x0)
                    Tey = (((1 - Tens) * (1 - C) * (1 + B)) / 2) * (y0 - yMoins) + (((1 - Tens) * (1 + C) * (1 - B)) / 2) * (y1 - y0)
                    Tsy = (((1 - Tens) * (1 + C) * (1 + B)) / 2) * (y0 - yMoins) + (((1 - Tens) * (1 - C) * (1 - B)) / 2) * (y1 - y0)
     
     
                    ' les 4 bases d'Hermite
                    h1 = 2 * t ^ 3 - 3 * t ^ 2 + 1
                    h2 = -2 * t ^ 3 + 3 * t ^ 2
                    h3 = t ^ 3 - 2 * t ^ 2 + t
                    h4 = t ^ 3 - t ^ 2
     
     
                    tx = h1 * x0 + h2 * x1 + h3 * Te + h4 * Ts
                    ty = h1 * y0 + h2 * y1 + h3 * Tey + h4 * Tsy
     
                    gr.DrawLine(black_pen, Midx + x0, Midy - y0, Midx + tx, Midy - ty)
     
                    x0 = h1 * x0 + h2 * x1 + h3 * Te + h4 * Ts
                    y0 = h1 * y0 + h2 * y1 + h3 * Tey + h4 * Tsy
                    t = t + 0.1
     
                Next
                t = 0
                temps = 0
                PictureBox1.Image = bm
            Next i
     
    .... cut ....
    Je joint une capture pour montrer le résultat
    Images attachées Images attachées  

Discussions similaires

  1. Suivi d'objet en mouvement
    Par Jonathan44444 dans le forum OpenCV
    Réponses: 11
    Dernier message: 05/06/2009, 01h02
  2. Calculer point d'interception de deux objets en mouvement
    Par Zarr.be dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 23/07/2008, 04h20
  3. [Débutant] Nommer des objets en mouvement
    Par @@juju@@ dans le forum Images
    Réponses: 4
    Dernier message: 31/07/2007, 21h56
  4. calcul coordonnées point
    Par diambu dans le forum Langage
    Réponses: 15
    Dernier message: 23/07/2007, 17h25
  5. suivre un objet en mouvement sur image
    Par jlf dans le forum Traitement du signal
    Réponses: 24
    Dernier message: 09/05/2005, 14h46

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