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 :

Interpolation d'une surface à partir de 5 points


Sujet :

Mathématiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 7
    Par défaut Interpolation d'une surface à partir de 5 points
    Bonjour à tous,

    Dans le cadre d'un projet, je dois recréer une surface à partir de 5 points de mesure.

    Comme un dessin vaut mieux que milles paroles, le voici :



    Les chiffres placés à coté des points rouges correspondent aux valeurs relevées sur ces points.

    Je souhaites dans un premier temps passer de 5 points (rouges) à 9 points (rouges + bleus) car j'ai déjà une procédure d'interpolation par spline cubique pour passer des 9 points (rouge + bleus) à plus (genre 25 points).

    N'hésitez pas à me contacter si ma problématiques est mal posée

    Merci aux âmes charitables qui accepterons de se pencher sur mon problème.

    <-------- J'adore ce smiley !!!

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Je pense que le mieux est de déduire les quatre angles séparément.

    Par exemple, pour le coin supérieur droit, tu ne devrais pas avoir besoin du 5 gauche ni du 3, donc tu te retrouves juste à faire un calcul sur un quadrilatère dont tu connais trois coins...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 7
    Par défaut
    Merci Médinoc pour ta réponse rapide, mais je ne vois pas trop comment faire pour calculer les cotés indépendamment les uns des autres.

    Pourrais-tu m'éclairer à ce sujet?

    Merci bcp ...

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Ça dépend des données que tu as exactement...
    Mais à partir des coordonnées des 4 points + celles du point central, tu devrais pouvoir déterminer ça...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    Juste une petite question pour bien comprendre ton problème: est-ce que le rectangle que tu as dessiné est isolé du reste du monde ou est-ce qu'il fait partie d'une "grille" plus vaste?
    Jean-Marc Blanc

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 7
    Par défaut
    FR119492: Salut!
    Juste une petite question pour bien comprendre ton problème: est-ce que le rectangle que tu as dessiné est isolé du reste du monde ou est-ce qu'il fait partie d'une "grille" plus vaste?
    Jean-Marc Blanc
    Pour répondre à ta question, le rectangle dessiné est "isolé du monde".

    (Je mets à jour la figure en fonction de vos remarques, pour ajouter le plus d'info possible).

    Merci

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Par défaut
    C'est bien de l'extrapolation, tout le soucis est dans la fonction avec laquelle tu vas extrapoler, et là il n'y a pas de vérité...

    - une extrapolation linéaire comme au dessus te donnera un plan mais qui ne pourra pas passer par tous tes points : il faut trouver A (dimension 3) qui donne Y = [X1 X2 1].A

    - pour passer partout il faut utiliser par exemple un polynôme d'ordre 2 qui te donne 5 coefficients à caler avec tes 5 points, ici A est tel que Y = [X1 X2 X1² X2² 1].A

    - d'un point de vue géométrique, comme le post précédent en raisonnant sur les milieux des segments et sur les distances aux points correspondants - c'est linéaire, on retrouve le même résultat que l'extrapolation linéaire

    - toujours d'un point de vue géométrique, en raisonnant sur chaque sous-rectangle : comme le point (10,10) est le symétrique du point (0,0) par rapport au segment entre les points (10,0) et (0,10) on peut supposer qu'il en est de même pour les points-images, et souhaiter obtenir 4 losanges dans l'espace

    Cf les images jointes associées à chaque cas (j'avais une heure à tuer)

    Bref l'extrapolation ça dépend vraiment de ce qu'on pense avoir comme allure générale.
    Images attachées Images attachées     

  8. #8
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 7
    Par défaut
    Merci beaucoup pour tous ces commentaires.

    OliveK : Je pense que la 2nd image que tu me proposes représentent le mieux le type d'image que je suis sensé obtenir.
    En effet, le point central aura une valeur plus élevée que les points en "périphérie".
    Par contre, cela ne sera symétrique comme l'image le suppose mais c'est typiquement le type d'image à obtenir.

    Citation Envoyé par OliveK
    - pour passer partout il faut utiliser par exemple un polynôme d'ordre 2 qui te donne 5 coefficients à caler avec tes 5 points, ici A est tel que Y = [X1 X2 X1² X2² 1].A
    Par contre je ne vois pas trop à quoi se réfèrent les X1, X2, Y et A dont tu parles.

    Pourrais-tu m'éclairer un peu plus la dessus ?

    Merci encore....

  9. #9
    Expert confirmé

    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
    Billets dans le blog
    2
    Par défaut
    comme on te l'a dit, le mieux dans ce cas est une approximation d'un polynôme de degré 2.

    Un spline bi-cubique marchera bien..

    Tu fais un tableau avec tes 5 points, tu initialises ton spline dessus, et tu utilises la routine d'interpolation pour interpoler...

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Par défaut
    Citation Envoyé par shrek.romaneo Voir le message
    Par contre je ne vois pas trop à quoi se réfèrent les X1, X2, Y et A dont tu parles.
    J'ai appelé X1 et X2 les coordonnées des points du plan, sur ton graphe ça correspondrait plutôt à x et y.
    Mon Y, c'est la hauteur correspondante, autrement dit ton z.
    A c'est le vecteur des coefficients du polynôme interpolé. Y = XA est une notation usuelle en régression linéaire.

    Ça veut dire que tu dois trouver les nombres a1, a2, a3, a4, a5 tels que pour tes 5 points tu aies :
    a1.x + a2.y + a3.x² + a4.y² + a5 = z.

    Ça te donne un système de 5 équations (tes 5 points) à 5 inconnues (les a1, a2...), il y a une solution unique (dans ce cas) qui correspond à la 2ème image de mon précédent post. C'est une régression linéaire dont la solution s'obtient avec une pseudo-inverse, ou bien en fonction de ton niveau, avec le pivot de Gauss.

    Ensuite, pour trouver le z correspondant à un nouveau couple (x,y) il suffit d'appliquer ce polynôme dont tu viens de déterminer les coefficents, si l'allure de la surface te convient tu obtiendras les points que tu veux. Note que tu n'auras pas besoin de l'interpolation par spline cubique, puisque tu auras déjà l'équation de la surface qui correspond à un simple polynôme de degré 2. Interpoler dessus ne ferait que retrouver cette équation.

    L'image n'est pas totalement symétrique, la surface contient les 5 points rouges qui ne présentent a priori aucun axe de symétrie.

  11. #11
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 7
    Par défaut
    Merci OlivK pour tes conseils.

    Je viens d'appliquer ta méthode à un cas concret (qui me sert de test de validation de l'algorithme).



    Comme tu peux le voir, je me retrouve avec 25% d'erreur sur la valeur en haut à droite.

    Je viens de voir que sur la ligne [18,611 ; 19,366 ; 22,615] on a pas une "parabole inversée" (orientée vers le bas) mais une parabole "non inversée" (ou orientée vers haut).
    Je suppose que ça doit y faire ...

    Du coup, je me demande si cette extrapolation est celle qui me convient.

    Merci pour votre aide...

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 14
    Par défaut
    Les 5 points que tu indiques correspondent à une parabole pure (et pour cause, il y a 5 coefficients à régler avec 5 points, donc ça passe pile-poil).
    Après, si tu as d'autres points où la surface devrait passer, utilise-les aussi pour déterminer la surface.
    Tes 5 points du début ne sont pas assez représentatifs, il est plutôt difficile de deviner une parabole dans un sens là où les 5 points donnent une parabole dans l'autre. C'est un peu comme si tu voulais trouver l'équation d'une courbe complexe en ne disposant que de points alignés.

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/06/2013, 10h20
  2. Réponses: 1
    Dernier message: 04/08/2008, 15h16
  3. Réponses: 13
    Dernier message: 30/08/2007, 11h53
  4. Réponses: 7
    Dernier message: 13/04/2007, 12h16
  5. [JTextArea]Recuperer une position à partir d'un Point
    Par rushtakn dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 19/05/2006, 09h36

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