Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3681 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Suivante
Auteur Sujet :

[Maths] Interpolation dans l'espace

n°36614
BENB
100% Lux.
Posté le 01-06-2001 à 18:10:29  profilanswer
 

Reprise du message précédent :
Up du soir

mood
Publicité
Posté le 01-06-2001 à 18:10:29  profilanswer
 

n°36743
tgrx
My heart is pumping for love
Posté le 03-06-2001 à 01:28:36  profilanswer
 

Bon finalement j'en suis venu a bout... j'ai opte pour une interpolation trilineaire, au niveau contraste c'est pas genial, mais le resultat est bon, et le lissage des courbes est parfait.
 
Le truc c'est que bien sur une interpolation trilineaire c'est facile, mais seulement dans les cubes.
Ex : http://astronomy.swin.edu.au/pbour [...] trilinear/
 
Seulement moi j'ai des cellules qui ressemblent a ca. Desole pour la tete du truc j'ai pas eu le temps de trouver l'outil qui trace les lignes... :D
http://prekipik.free.fr/cell.gif
 
L'idee c'est de trouver les coordonnees relatives d'un point quelconque dans la cellule. Pour ca il faut trouver une transformation affine entre le cube initial et la cellule.
Par exemple pour trouver la coordonnee suivant l'axe x, il faut faire coulisser (de maniere affine) le plan ABCD vers le plan EFGH, et s'arreter des que le point M recherche appartient au plan coulisse. On en deduit la coordonnee en faisant par exemple le rapport AI/AE, ou I est l'intersection du plan coulisse avec le segment AE.
 
Soit P le plan coulisse de coordonnee x.
Si I,J,K,L sont les intersections de ce plan avec AE,BF,DH et CG, on a :
AI= x.AE
BJ= x.BF
DK= x.DH
CL= x.CG
 
Et une condition necessaire et suffisante d'appartenance de M au plan coulisse est :
(IJ^IK).IM = 0 (un produit mixte tout bete)
 
ce qui conduit a une equation du troisieme degre en x, penible a resoudre (j'ai pas retrouve la formule sur le net, donc ca veut dire faire du newton sur [0,1] pour trouver la racine... :sarcastic: ).
Mais c'est toujours mieux que d'inverser une matrice 8x8.
L'inconvenient est qu'il faut recalculer les quadrinomes du 3e degre pour chaque point M de la cellule.
 
 
...
 
 
 
Donc voici la solution que j'ai utilisee :
Je considere les vecteurs (DH,DA,DE) comme une base de la cellule (ce qui n'est vrai QUE si elle est parallelepipedique), et je trouve les coordonnees de M dans cette base.
 
Je fais de meme avec les 7 autres bases possibles (relatives aux 7 autres sommets), et ensuite je fais la moyenne de tous ces coefficients... et ca fonctionne plutot pas mal, a ma grande surprise... je dirais meme qu'on est tres pres de la valeur theorique.
Avantage de la methode : ca fait 8 matrices 3x3 a inverser par cellule, ce qui est assez leger, et ensuite on utilise ces matrices pour tous les points de la cellule...
 
Et niveau vitesse ca va quasiment aussi vite que la bete projection sans interpolation... http://forum.hardware.fr/sqlforum/icones/icon16.gif
 
Donc moi je dis oui.
Et donc ensuite je trouve la valeur du point M en faisant une interpolation lineaire classique, comme si j'etais dans un cube, avec les coefficients trouves.
 
Reste un dernier point, trouver les valeurs aux 8 sommets. Et bien pour chaque sommet, je trouve les 8 cellules (au plus) auquel il appartient, et je fais une barycentration inversement proportionnelle aux distances du sommet par rapport aux centres de ces cellules (avec ta fonction de saturation BENB, comme ca on ne jette rien de ce qui a ete dit dans ce post ;) ).
 
Dernier detail : pour trouver la valeur d'un point dans la cellule, je ne tiens pas compte de la valeur de cette derniere. En fait si, puisqu'elle est prise en compte indirectement dans la valeur des sommets, mais bon... je sais pas si ca joue. En tout cas les resultats ont l'air corrects.
 
A suivre : des images du resultat... :sol:

 

[edit]--Message édité par tgrx--[/edit]

n°36744
tgrx
My heart is pumping for love
Posté le 03-06-2001 à 01:47:13  profilanswer
 

Bon alors, voici la grille initiale, cylindrique encore une fois (mais ce n'est qu'un exemple... :p)...
 
 
 
http://prekipik.free.fr/grid2.gif
 
 
 
C'est un segment de tuyau dans lequel il y a du liquide et du gaz. En projection directe voici le resultat :
 
 
 
http://prekipik.free.fr/project.gif
 
 
 
 
On dirait des vagues a la surface, mais en fait non, c'est uniquement du aux cellules qui ne sont pas horizontales, et donc ca fait des creux et des bosses... on dirait des vagues, mais malheureusement c'est parfaitement calme dans le tuyau.
 
Avec l'interpolation trilineaire (que je viens d'expliquer) :
 
 
 
http://prekipik.free.fr/trilin.gif
 
 
 
C'est hallucinant, je ne m'attendais pas a ca ! A partir d'une grille foireuse, pas assez detaillee (regardez la taille des voxels sur l'image d'en haut), ce fichu algorithme arrive a me recreer une surface parfaitement plane...
 
Ah c'est mon boss qui va etre content.
Je tiens a remercier tous ceux qui m'ont aide, BENB, janoscoder, et minusplus.... :hello:

 

[edit]--Message édité par tgrx--[/edit]

n°36940
tgrx
My heart is pumping for love
Posté le 05-06-2001 à 10:04:04  profilanswer
 

UP

n°36959
BENB
100% Lux.
Posté le 05-06-2001 à 10:56:18  profilanswer
 

Si, si (DH,DA,DC?) est bien une base, mais elle n'est pas othogononale, le pb est plus de trouver les coordonnes de BFGE... :D

n°36960
tgrx
My heart is pumping for love
Posté le 05-06-2001 à 11:01:02  profilanswer
 

Arf tu joues sur les mots....
 
Sous entendu que mes points ont pour coordonnees (0,0,0),(0,0,1)...,(1,1,1)... et que donc dans ce cas (DH,DA,DC) n'est pas une base car l'application qui transforme les points (0,0,0),(0,0,1)...,(1,1,1) en mon volume n'est pas lineaire.
 
baaaaaaaaaah :p:p:p

n°36972
BENB
100% Lux.
Posté le 05-06-2001 à 11:29:45  profilanswer
 

Plus exactement sur les termes mathematiques...
 
A propos pourquoi tu as elimine les systemes entierment barycentriques (en 1/d ou 1/d2) ?
 
Eux devait te donner le contraste que tu voulais ?
 
peut-etre etaient ils trop lents ?

n°36980
tgrx
My heart is pumping for love
Posté le 05-06-2001 à 11:43:10  profilanswer
 

Les systemes barycentriques tous seuls etaient bof, parce que pour avoir un bon resultat final il faut tenir compte d'un grand nombre de points, sinon on a des bons resultats *localement*, et les raccords sont degueulasses (saut de valeurs a la frontiere des cellules).
 
Donc c'est pour ca que j'ai mixe avec du trilineaire pour avoir qq chose de plus joli, et en meme temps j'utilise le 1/d sur les points des sommets.
C'est un compromis... les resultats sont pas mauvais.
 
Un exemple en couleur :
 
http://prekipik.free.fr/color.gif.
 
Mais je crois que je vais essayer aussi une deuxieme methode : toujours en 1/d pour trouver mes sommets, puis en 1/d encore a l'interieur de chaque cellule par rapport aux 8 sommets. Je pense que ca va donner de meilleurs resultats que du 1/d direct...

n°36984
BENB
100% Lux.
Posté le 05-06-2001 à 13:04:33  profilanswer
 

Pour le systeme barycentrique, le mieux pour le rendu (pas pour le temps de calul) c'est d'utiliser TOUTS les points :D
 
sinon tu peux utiliser des coefs comme 3 pour la maille courante, puis 2 pour les mailles adjacentes, 1 pour les mailles a une maille de distance, puis 0 pour les autres...
 
ou revenir sur des truc comme 1/d2 ou 1/d3 pour diminuer les influences des points distants.
 
Sinon tu peux construire ton systeme trilineaire sur les centres des voxels, comme ca plus de baycentres...
 
Je suis consciente que cette derniere modif n'est pas evidente

n°36998
tgrx
My heart is pumping for love
Posté le 05-06-2001 à 13:21:39  profilanswer
 

BENB a écrit a écrit :

 
Sinon tu peux construire ton systeme trilineaire sur les centres des voxels, comme ca plus de baycentres...




 
excellente idee... :)
 
C'est vrai que ca m'oblige a revoir ma structure de donnees, mais je pense que le jeu en vaut la chandelle... bon, on verra, si j'ai le temps... ;)
 
Parce que vu que j'ai un truc qui marche a peu pres, j'ai un peu la flemme de tout bouleverser... mais en tout cas ta remarque est extremement pertinente... (c'est pas moi qui y aurais pense :gun: )

mood
Publicité
Posté le 05-06-2001 à 13:21:39  profilanswer
 

n°38088
tgrx
My heart is pumping for love
Posté le 08-06-2001 à 12:24:45  profilanswer
 

AYAI ! C'est fait.
 
Bon alors en fait j'en ai un peut chie, mais ca marche correctement maintenant. Mon probleme majeur etait que je perdais du volume sur les frontieres en passant au nouveau systeme de maillage (je passe d'un volume de dimension I*J*K a un volume de dimension (I-1)*(J-1)*(K-1)).
La solution que j'ai trouve a ete de rajouter des cellules a la frontiere, mais ces cellules sont planes, ou reduites a un point dans les coins. Comme ca le volume reste le meme, et maintenant ma nouvelle grille couvre exactement le meme volume.
 
Ensuite j'ai tres legerement modifie mon algo pour trouver les coordonnees d'un point a l'interieur d'une cellule, maintenant je tiens compte egalement de la surface des parois de la cellule lorsque je fais la moyenne de mes coefficients, sinon dans certains cas de cellules vraiment deformees, ca sortait de l'intervalle [0,1].
 
Et donc screenshot a suivre, ca commence a devenir assez joli cette histoire... :)

n°38138
BENB
100% Lux.
Posté le 08-06-2001 à 13:34:02  profilanswer
 

Pour tes problemes aux frontieres il faut que tu vois avec ceux qui on fait le code de calcul...
 
Pour des vitesses : vitesse nulle a la paroi
Pour des Temperature : voir avec eux Temp de la paroi ou alors temperature d'une cellule imaginaire symetrique de la tienne par rapport a la paroi...
etc...

n°43371
tgrx
My heart is pumping for love
Posté le 28-06-2001 à 14:06:55  profilanswer
 

BENB> le probleme c'est que j'ai 82 variables :sarcastic: c'est un peu lourd d'imposer des conditions aux limites pour chacune.
:hello: (reponse tardive)
 
 
 
 
 
Bon en tout cas pour moi c'est fini... :wahoo:, le programme fonctionne, le rapport est a chier (comme d'hab).
Pour ceux que ca interesse (comment ca personne :sweat: ), j'ai tout mis la :
http://prekipik.free.fr
 
A bientot sur HFR... :jap:

 

[edtdd]--Message édité par tgrx--[/edtdd]

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
[php] Comment tester qu'une variable est éguale à un espace..petit prog en batch pour gagner de l'espace disk
[VB] pointeur souris et interpolation[VB 6 / maths] Urgent : changement du log neperien en log 10
HTML = aliminer l'espace entre le bord des fenetre et le texte/imagesEst-ce que vous connaissez l'adresse d'un bon forum de maths ?
Comment on fait un espace hotizontal en html ?Placer sur un site un espace où tout le monde peut écrire qq chose
Plus de sujets relatifs à : [Maths] Interpolation dans l'espace


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)