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

  FORUM HardWare.fr
  Programmation

  [Maths] Interpolation dans l'espace

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[Maths] Interpolation dans l'espace

n°35637
tgrx
My heart is pumping for love
Posté le 30-05-2001 à 15:03:24  profilanswer
 

J'ai un ensemble de voxels, c'est a dire de betes volumes de forme quelconque et une valeur est associee a chacun de ces volumes. Elle est donc uniforme dans chaque voxel.
Basiquement on peut attribuer cette valeur au centre de chaque voxel.  
 
Mon probleme est d'associer une valeur a n'importe quel point de l'espace. Donc je prends un point au hasard, je regarde dans quel voxel il est, je lui attribue la valeur du voxel.
Oui, mais a l'affichage final c'est pas bo :), vu que les voxels sont representes comme des gros blocs uniformes.
 
Alors j'ai decide d'interpoler tout ca.
Je prends un point, je trouve le voxel auquel il appartient, et je determine la liste des voisins immediats. Donc j'ai mon voxel central, de centre P, de valeur v. J'ai tous les voisins, de centres Pi, de valeurs vi.
 
La question est : quelle est la formule la mieux adaptee pour determiner la valeur de mon point en "lissant" l'ensemble, sans lisser trop bien sur, car je veux garder de l'information.
 
Pour l'instant j'ai essaye de barycentriser tout ca, avec l'inverse des distances, l'inverse des distances au carre, mais c'est pas tres convaincant, c'est un peu plus lisse, mais je pers beaucoup d'information (j'ai besoin de garder un certain contraste entre les cellules).
Je suis preneur de toutes les idees. :hello:

 

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

mood
Publicité
Posté le 30-05-2001 à 15:03:24  profilanswer
 

n°35643
minusplus
Posté le 30-05-2001 à 15:12:23  profilanswer
 

y sont comment tes voxels, cubiques ?

n°35645
tgrx
My heart is pumping for love
Posté le 30-05-2001 à 15:13:45  profilanswer
 

Nan pas franchement. On peut les definir comme des hexaedres, en gros ce sont des cubes etires et deformes.

n°35647
BENB
100% Lux.
Posté le 30-05-2001 à 15:14:22  profilanswer
 

Si tes voxels sont repartis aletoirements je ne te propose pas grand chose sinon prendre en compte le volume comme le coeff pour le barycentre (pour plus de realisme ?)
eventuellemnt de prendre des carres (ou des cubes :D) des distances pour accroitre le contraste...
 
Par contre si tes voxels sont organises il faut voir leur organisation...

n°35648
minusplus
Posté le 30-05-2001 à 15:16:38  profilanswer
 

attends, attends....  
 
Ton truc c'est que tu as un volume (fini ou pas) découpé en voxels, c'est ça ? Dans ce cas, à un maillage donné (cubique, hexa, etc...) correspond une forme de voxel (de la même manière qu'on peut imaginer utiliser des pixels hexagonaux)

n°35649
minusplus
Posté le 30-05-2001 à 15:16:41  profilanswer
 

attends, attends....  
 
Ton truc c'est que tu as un volume (fini ou pas) découpé en voxels, c'est ça ? Dans ce cas, à un maillage donné (cubique, hexa, etc...) correspond une forme de voxel (de la même manière qu'on peut imaginer utiliser des pixels hexagonaux)

n°35663
tgrx
My heart is pumping for love
Posté le 30-05-2001 à 15:58:41  profilanswer
 

Mes voxels sont organises en une grille rectilineaire deformee.
Un exemple ci dessous :
 
** NAPU D'EXEMPLE **
 
Dans l'absolu mes voxels sont cubiques et la grille et cartesienne. Il sont juste deformes (enroules dans le cas present) pour avoir une forme de cylindre.

 

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

n°35665
tgrx
My heart is pumping for love
Posté le 30-05-2001 à 16:01:18  profilanswer
 

Cette image est peut etre plus explicite...
http://prekipik.free.fr/grid2.gif

n°35676
BENB
100% Lux.
Posté le 30-05-2001 à 16:14:32  profilanswer
 

Dans ce cas tu peut faire une interpolation trilineaire ou qqchose du genre
 
f(x,y,z)= ax+by+cz+dxy+exz+fyz+gxyz+h
ou
f(x,y,z) = ax2+bx+cy2+dy...
 
sous forme plus simple x,y,z est entre les points  
 
 3 - 4
1 - 2|  
|7 -|8    <--- ceci est une maille
5 - 6    
 tu calcules un point entre 1&2, 3&4, 7&8, 5&6 en supossant que la fonction est une droite (ou une x3 avec des points 1' et 2' etc)
ensuite tu calcule un point au milieux des carres 1243 et 5687
toujours sous les memes principes
et tu fini par le point dans le cube a partir des points dans les carres...
 
Je pense que c'est pas clair a la premiere lecture, mais bon...

n°35677
minusplus
Posté le 30-05-2001 à 16:17:17  profilanswer
 

ok, maillage cylindrique... Ben y'a des softs qui font ça... Data Explorer par exemple...

mood
Publicité
Posté le 30-05-2001 à 16:17:17  profilanswer
 

n°35691
BENB
100% Lux.
Posté le 30-05-2001 à 16:30:36  profilanswer
 

La methode que je donne est tres utilisee (images notemant) mais elle ne te donnera pas le contraste voulu je pense...
essaye des barycentre d'ordre 2 ou 3, mais tu risque de faire apparaitre des etoiles due a la discontinuite au centre de tes voxels (qd d->0)

n°35693
tgrx
My heart is pumping for love
Posté le 30-05-2001 à 16:34:26  profilanswer
 

benb> ok pour une interpolation trilineaire, mais il faut que je definisse les 8 points en question.
 
A priori ce sont les 8 sommets de mon voxel, mais mon probleme est d'affecter une valeur a ces huit sommets, car si tu regardes bien, chaque sommet appartient a au plus 4 voxels, et donc il faut trouver une valeur moyenne (et a priori je ne vois pas pourquoi la moyenne des 4 valeurs serait une bonne approximation)
Et en fait ca revient a deplacer mon probleme.
 
Euh attends j'ai un doute la... je verifie... :??:
 
minusplus> oui, mais je dois le faire a la main (c'est en plein milieu de mon prog), et la grille ici est cylindrique mais c'est un exemple. Le cas general c'est grille rectilineaire deformee.

n°35694
tgrx
My heart is pumping for love
Posté le 30-05-2001 à 16:36:04  profilanswer
 

BENB> oui effectivement j'ai plein d'endroit trop lumineux avec 1/d^2

n°35696
tgrx
My heart is pumping for love
Posté le 30-05-2001 à 16:39:10  profilanswer
 

et d'ailleurs l'interpolation trilineaire c'est chaud car je n'ai pas un cube, mais un cube deforme/etire.... il va falloir que je le remette droit avec de faire quoi que ce soit.

n°35712
tgrx
My heart is pumping for love
Posté le 30-05-2001 à 17:05:12  profilanswer
 

UP du soir !

n°35718
BENB
100% Lux.
Posté le 30-05-2001 à 17:12:01  profilanswer
 

tgrx a écrit a écrit :

et d'ailleurs l'interpolation trilineaire c'est chaud car je n'ai pas un cube, mais un cube deforme/etire.... il va falloir que je le remette droit avec de faire quoi que ce soit.




En coordonnes cylindriques se sont des paralepipedes retangles...
 
Et les points tu les prends au centre, comme tu le disais dans ton premier post...

n°35721
BENB
100% Lux.
Posté le 30-05-2001 à 17:14:35  profilanswer
 

tgrx a écrit a écrit :

BENB> oui effectivement j'ai plein d'endroit trop lumineux avec 1/d^2




 
Tu dois les avoir aussi en 1/d mais moins marques...
 
essais de faire une fonction de saturation pour eviter que d de deviennent plus petit que 1/10 env de la taille de tes vortex...

n°35737
BENB
100% Lux.
Posté le 30-05-2001 à 17:41:46  profilanswer
 

Bon j'ai pas retrouve ma fct saturation...
 
le principe : fonction continue derivable valant y=x pour x<sat et y->max pour x> +inf
double saturationMax(double x, double saturation, double max);
{
  double result = x;
  if(x>sat)
  {
   double saturationWidth = (saturation-max);
   double k = (max-1)/saturationWidth ;
   double a = saturationWidth /(-exp(-k*saturation));
   result = max - a*exp(-k*x);
  }
 
  return result;
}
 
dans ton cas tu utilises  
 D = -saturationMax(-d,-ro/10,-eps); ou eps = 1e-10 env...
 
les - servent a faire des mini a partir d'un maxi...
 
Par contre pour le temps de calcul c'est pas top...
 
pour eviter les points trop lumineuxtu regles le ro/10 qui n'est qu'une indication...

n°35937
tgrx
My heart is pumping for love
Posté le 31-05-2001 à 11:10:37  profilanswer
 

Merci BENB.
Mais moi pas comprendre pourquoi k= (max-1)/saturationWidth.
 
La fonction definie ci dessus est continue et prend les bonnes valeurs. Mais quand je teste la derivabilite en 1, ca me donne :
k= -1/saturationWidth
 
:??: me trompe-je ? :??:
 
Peut-etre :crazy: ... ou pas :sweat:

n°35998
tgrx
My heart is pumping for love
Posté le 31-05-2001 à 12:23:30  profilanswer
 

Interpolation trilineaire : j'ai deux pistes.
* Je suppose que je peux definir une fonction multilineaire
f(x,y,z)= Axyz+Bxy+Cxz+Dyz+Ex+Fy+Gz+H,
 
et en ecrivant les conditions aux limites (a savoir les 8 sommets du voxel), ca me fait une matrice 8x8 a inverser pour trouver A,B,C...H. Mais apres coup, je peux definir la valeur de n'importe quel point a l'interieur.
Pb: il faut que je prie pour que la valeur au centre soit egale a la valeur du voxel :(
 
* Deformation d'un cube.
Tout le monde sait faire une interpolation trilineaire dans un cube, donc il faut trouver une transformation affine entre un cube et mon voxel.
C'est faisable, mais pour trouver chaque coordonnee "cubique" d'un point, ca me fait une equation de degre 3 a resoudre. Pas top non plus, surtout qu'il faut refaire la manip pour chaque point.
 
Bref... UP du midi ! :hello:

 

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

n°36027
BENB
100% Lux.
Posté le 31-05-2001 à 14:10:52  profilanswer
 

tgrx a écrit a écrit :

Merci BENB.
Mais moi pas comprendre pourquoi k= (max-1)/saturationWidth.
 
La fonction definie ci dessus est continue et prend les bonnes valeurs. Mais quand je teste la derivabilite en 1, ca me donne :
k= -1/saturationWidth
 
:??: me trompe-je ? :??:
 
Peut-etre :crazy: ... ou pas :sweat:




 
Il est possible que je me soit trompee j'ai fait ca sur un coin de table... je vais verifier...

n°36029
BENB
100% Lux.
Posté le 31-05-2001 à 14:17:13  profilanswer
 

tgrx a écrit a écrit :

Interpolation trilineaire : j'ai deux pistes.
* Je suppose que je peux definir une fonction multilineaire
f(x,y,z)= Axyz+Bxy+Cxz+Dyz+Ex+Fy+Gz+H,
 
et en ecrivant les conditions aux limites (a savoir les 8 points du vortex), ca me fait une matrice 8x8 a inverser pour trouver A,B,C...H. Mais apres coup, je peux definir la valeur de n'importe quel point a l'interieur.
Pb: il faut que je prie pour que la valeur au centre soit egale a la valeur du voxel :(
 
* Deformation d'un cube.
Tout le monde sait faire une interpolation trilineaire dans un cube, donc il faut trouver une transformation affine entre un cube et mon vortex.
C'est faisable, mais pour trouver chaque coordonnee "cubique" d'un point, ca me fait une equation de degre 3 a resoudre. Pas top non plus, surtout qu'il faut refaire la manip pour chaque point.
 
Bref... UP du midi ! :hello:




utilise plutot la methode de la triple interpolation lineraire dans un maillage en coordonnes cylindriques, car tes voxels (pas vortex) y sont rectangles... a moins que je ne me trompe...
coordonnes cylindriques : distance a l'axe dans un plan horizontal, angle, altitude... enfin quand l'axe est vertical...
sinon un systeme de 8eq a 8 inconnues laisse tomber
 
sinon prends tes noeuds au centre des voxels pas sur les coins...

n°36034
tgrx
My heart is pumping for love
Posté le 31-05-2001 à 14:28:30  profilanswer
 

BENB> oui mais... effectivement si mes voxels sont a composantes cylindriques dans l'exemple du dessus (en fait j'aurais pas du le montrer), ce n'est pas le cas general, et je peux avoir a traiter des voxels qui ne respectent pas un systeme de coordonnees connu.
 
Donc bof bof... c'est pour ca que j'ai un quadrinome du 3e degre a resoudre a chaque fois :cry:

n°36037
BENB
100% Lux.
Posté le 31-05-2001 à 14:35:17  profilanswer
 

Pour la fct saturation :
f = x pour x<saturation trivial
ensuite on utilise une exp pour avoir l'asymptote en y = max pour x vers +inf
donc f = max-a.exp(-k.x) reste a trouver a et k.
f continue donc f(sat-)=f(sat+) (1)
f derivable f'(sat-)=f'(sat+) (2) car notre fonction est constituee de deux arc continus derivables, le Pb ne peut donc venir que du raccordement...
 
(1) -> max-a.exp(-k.sat) = sat
(2) -> a.k.exp(-k.sat) = 1 car (x)'=1
 
(1) -> sat-max = -a.exp(-k.sat)
(2) -> 1= -k(sat-max)
 
d'ou k = 1/(max-sat)... je retombe sur le meme resultat.. que toi
je suis desolee, ne se trompent que ceux qui ne font rien !
 
Cette erreur remet en cause la derivabilite de la fct. Dans ton cas rien de dramatique je suppose...

n°36041
tgrx
My heart is pumping for love
Posté le 31-05-2001 à 14:39:32  profilanswer
 

Non ca ne remet rien en cause, mais c'est juste que je me suis arrache les cheveux pour savoir d'ou tu sortais cette fonction, j'essayais de donner un sens physique aux differents coefficients, et je voyais pas ce que 1 venait faire avec max, car a priori les ordres de grandeurs peuvent varier.
 
En tout cas merci, ca doit etre la premiere fois en 6 mois que je derive une fonction :).
Ca fait tout drole... :benetton:

n°36048
BENB
100% Lux.
Posté le 31-05-2001 à 14:47:18  profilanswer
 

c'est joli les quadrigone du 3eme...
 
je suis desolee pour toi dans ce cas continue avec les barycentres + saturation...

n°36051
tgrx
My heart is pumping for love
Posté le 31-05-2001 à 14:49:39  profilanswer
 

Merci pour tout quand meme, tu m'as donne un sacre coup de http://forum.hardware.fr/sqlforum/icones/icon14.gif... :hello:

n°36055
BENB
100% Lux.
Posté le 31-05-2001 à 14:50:20  profilanswer
 

tgrx a écrit a écrit :

Non ca ne remet rien en cause, mais c'est juste que je me suis arrache les cheveux pour savoir d'ou tu sortais cette fonction, j'essayais de donner un sens physique aux differents coefficients, et je voyais pas ce que 1 venait faire avec max, car a priori les ordres de grandeurs peuvent varier.
 
En tout cas merci, ca doit etre la premiere fois en 6 mois que je derive une fonction :).
Ca fait tout drole... :benetton:




 
Ben moi aussi alors je me trompe...
pas de consequences dans ton cas car max est prochge de 0...
 
Sinon beau sens physique pour la question et honte a moi :D

n°36058
tgrx
My heart is pumping for love
Posté le 31-05-2001 à 14:53:10  profilanswer
 

BENB a écrit a écrit :

 
et honte a moi :D




 
Ce que tu ne sais pas (:p), c'est le temps qu'il m'a fallu pour reussir a la deriver et etre sur de mon resultat... :sarcastic:... je suis bien rouille moi aussi... :sweat:

n°36059
BENB
100% Lux.
Posté le 31-05-2001 à 14:53:38  profilanswer
 

tgrx a écrit a écrit :

Merci pour tout quand meme, tu m'as donne un sacre coup de http://forum.hardware.fr/sqlforum/icones/icon14.gif... :hello:




il faut dire que les maths me manquent un peu de puis 6 mois que j'ai arrete la simulation (oui avant je simulais :D)
et franchement les Bases de donnees.. bof si encore il y avait un traitement mathematique... meme petit...
 
Bon courage pour la suite...
 
PS :  a propos elle est chauffee, ou sous contraintes mecanique ta piece ?

n°36063
tgrx
My heart is pumping for love
Posté le 31-05-2001 à 14:59:05  profilanswer
 

BENB a écrit a écrit :

 
PS :  a propos elle est chauffee, ou sous contraintes mecanique ta piece ?




 
Ni l'une ni l'autre, c'est un fluide qui se balade la dedans, sous forme liquide en bas du cylindre, et du gaz en haut.
Le cylindre est decoupe en petits voxels pour pouvoir resoudre localement les equations de meca flu (Navier-Stokes entre autres) dans chaque voxel...
 
Et donc mon boulot c'est d'afficher tout ca, parce qu'evidemment leur simulateur ne balance que des tableaux de chiffres, et donc a moi le volume rendering, OpenGL, texture 3d tout ca
 
-> donc matrice 2^n*2^n*2^n pour ce cher OpenGL, et j'ai besoin de tout projeter la dedans, et je me dis qu'une chtite interpolation ne ferait pas de mal pour ameliorer la qualite visuelle (actuellement on voit les gros blocs), et voila le merdier :D
 
PS : et leur simulateur est lent, donc il ne peuvent pas augmenter le nombre de voxels (et il y en a pas beaucoup...)... c'est pour ca que je suis oblige d'interpoler...

n°36076
BENB
100% Lux.
Posté le 31-05-2001 à 15:18:35  profilanswer
 

Tu m'etonne que ce soit lent...
resoudre Navier et Stokes en Gas/Liquide et dans un systeme pareil...
 
Dis c'est pas du petrole ton liquide ?
Ils ne cherchent personne pour la partie simulation ?
 non je dis ca comme ca, moi... :D

 

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

n°36081
tgrx
My heart is pumping for love
Posté le 31-05-2001 à 15:25:09  profilanswer
 

BENB> je suis tenu au secret sur ce projet :benetton:, d'ailleurs j'aurais pas du donner les formes des grilles.
 
Pour la partie simulation, ils programment en Fortran ...:D... mais c'est vrai qu'ils recherchent actuellement des ingenieurs.
Bon le truc c'est que c'est en Norvege (eh oui, moi je suis qu'un petit etudiant en stage...), et je pense pas que ca va coller avec ta vie de famille...
 
Et puis faudrait changer ta 650 SV pour une R1 ou une GSXR 1000, parce qu'ici ils ont que des grosses motos... :hello:

n°36105
BENB
100% Lux.
Posté le 31-05-2001 à 15:47:29  profilanswer
 

tgrx a écrit a écrit :

BENB> je suis tenu au secret sur ce projet :benetton:, d'ailleurs j'aurais pas du donner les formes des grilles.
 
Pour la partie simulation, ils programment en Fortran ...:D... mais c'est vrai qu'ils recherchent actuellement des ingenieurs.
Bon le truc c'est que c'est en Norvege (eh oui, moi je suis qu'un petit etudiant en stage...), et je pense pas que ca va coller avec ta vie de famille...
 
Et puis faudrait changer ta 650 SV pour une R1 ou une GSXR 1000, parce qu'ici ils ont que des grosses motos... :hello:




 
Je crois qu'en ne me disant rien tu m'en dis un peu plus encore... :D
 
La Norvege...

 

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

n°36109
tgrx
My heart is pumping for love
Posté le 31-05-2001 à 15:53:35  profilanswer
 

UP du soir....

 

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

n°36149
tgrx
My heart is pumping for love
Posté le 31-05-2001 à 17:24:08  profilanswer
 

espoir !

n°36339
tgrx
My heart is pumping for love
Posté le 01-06-2001 à 10:12:12  profilanswer
 

Up du matin... chagrin (en plus il pleut :cry: )

n°36347
BENB
100% Lux.
Posté le 01-06-2001 à 10:33:13  profilanswer
 

tgrx a écrit a écrit :

Up du matin... chagrin (en plus il pleut :cry: )




Desolee ici grand ciel bleu...

n°36504
tgrx
My heart is pumping for love
Posté le 01-06-2001 à 14:01:29  profilanswer
 

Le soleil est revenu.
 
Up de l'apres-midi... oh oui ! ;)

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

Up du soir

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Maths] Interpolation dans l'espace

 

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-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR