Interpolation linéaire et grille
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Interpolation linéaire et grille



  1. #1
    invite5ec1ff79

    Exclamation Interpolation linéaire et grille


    ------

    Bonsoir
    je utilise une grille regulière 2D j'ai un champs bien défini sur les noeuds de cette grille et j'ai insérer des nouveaux noeud dans le but de raffiner la grille et je
    voudrai déterminer le champs sur ces nouveaux noeuds par interpolation linéaire en utilisant le langage fortran.

    Je suis nouveau en fortran et je n'arrive pas à écrire la bonne boucle d'interpolation puisque mon champ s'ecrit sous la forme u(i,j)
    Merci de m'aider c'est très urgent
    Merci

    -----

  2. #2
    polo974

    Post Re : Interpolation linéaire et grille

    En fait, il te fait faire une interpolation bilinéaire.
    voici un bout de code C (ben oui, le fortran, ce n'est pas ma tasse de thé...) que j'ai commis (avec un anglais digne d'une vache espagnole):
    Code:
        double k[2][2];
    // weight of each corner (bilinear interpolation) for a point 
    // in a rectangle
    // * is the actual point coming from touchscreen
    // cc[pos][axe] are lengths
    // k[y][x] are areas weight for point pts[col+y][lig+x]
    //
    //                    cc[0][0]     cc[1][0]
    //pts[col+0][lig+0] +----------+----------------+ pts[col+1][lig+0]
    //                  |          |                |
    //                  |          |                |
    //                  | k[1][1]  |    k[0][1]     |  cc[0][1]
    //                  |          |                |
    //                  |          |                |
    //                  +----------*----------------+
    //                  |          |                |
    //                  | k[1][0]  |    k[0][0]     |  cc[1][1]
    //                  |          |                |
    //pts[col+0][lig+1] +----------+----------------+ pts[col+1][lig+1]
    //
    // one point weight is proportional the opposite area
    // the result is divided by kgrid thas is the rectangle area
        
        k[0][0] = cc[1-0][1] * cc[1-0][0];
        k[0][1] = cc[1-0][1] * cc[1-1][0];
        k[1][0] = cc[1-1][1] * cc[1-0][0];
        k[1][1] = cc[1-1][1] * cc[1-1][0];
    
        for(axe = 0; axe < 2; axe ++)
        {
            p[axe] = (    pts[cl[1]+0][cl[0]+0][axe] * k[0][0] +
                        pts[cl[1]+0][cl[0]+1][axe] * k[0][1] +
                        pts[cl[1]+1][cl[0]+0][axe] * k[1][0] +
                        pts[cl[1]+1][cl[0]+1][axe] * k[1][1] )
                    / kgrid);
        }
    les pts sont les points de la grille d'origine.
    les cl sont les index de la cellule de la grille contenant le point à interpoler.
    les cc sont les distance du point ( représenté par * ) par rapport à la cellule de la grille.
    les k sont les surfaces des rectangles définis dans la cellule de la grille.
    kgrid est la surface de la cellule de la grille.

    bref, on donne à chacun des 4 points de la cellule de la grille le poids de la surface du rectangle opposé, on somme et on divise par la surface de la cellule...

    ce bout de code ne s'applique bien sûr que pour 1 point, et ne concerne que le calcul final, une fois la bonne cellule de grille trouvée et les distances (cc) calculées.

    pour balayer toute une nouvelle grille, il faut donc ajouter 2 boucles imbriquées (en x et y) et la recherche de la bonne cellule et enfin calculer les cc pour terminer avec cette interpolation (et accessoirement ranger le résultat).
    Jusqu'ici tout va bien...

  3. #3
    polo974

    Re : Interpolation linéaire et grille

    [scrogneugneu=ON]
    C'est bien mignon de mettre un flag "point d'exclamation" pour montrer un certain degré d'urgence, mais répondre à ceux essayant de vous aider semble être un début de commencement de politesse.
    [scrogneugneu=OFF]
    Jusqu'ici tout va bien...

  4. #4
    yoda1234

    Re : Interpolation linéaire et grille

    Chaque fois que je vois la phrase:
    c'est très urgent
    ou quelque chose qui s'en approche, cela me démotive, bien que dans cette partie du forum je ne sois pas très utile.

    Rien n'est jamais urgent sur le net.
    Là où l'ignorance est un bienfait, c'est de la folie d'être sage (Thomas Gray).

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Interpolation
    Par invite6c256881 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 10/09/2011, 00h40
  2. Interpolation en 3D
    Par RoBeRTo-BeNDeR dans le forum Mathématiques du supérieur
    Réponses: 7
    Dernier message: 05/08/2010, 16h22
  3. Interpolation
    Par invite097f04f0 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 09/04/2010, 17h02
  4. Interpolation
    Par invite3bbb55bc dans le forum Mathématiques du supérieur
    Réponses: 1
    Dernier message: 29/01/2009, 20h35
  5. Interpolation
    Par invite769a1844 dans le forum Mathématiques du supérieur
    Réponses: 5
    Dernier message: 11/01/2008, 10h43