Je peux te proposer une solution, mais à ce genre de problème il y autant de solutions que de personnes qui cherchent.
Déjà, déterminer ce qu'on cherche : une isotherme, c'est une ligne,
donc un tableau de coordonnées. Si tu en as plusieurs, c'est un tableau
à deux dimensions de coordonnées :
struct SPOINT {float x, float short y} Isothermes[10][10000]; //pour 10 isothermes de 10000 points (10000 = 100*100)
Une isotherme est définie par une valeur, donc on aura aussi un tableau
de températures : float IsoTemp[10]; //A remplir avec
les valeurs d'isothermes recherchées
ensuite, il faut balayer le tableau et pour chaque point, déterminer si
une des isothermes passe entre ce point et un de ses voisins
Par exemple, pour le points (X,Y)=383K, (X,Y+1) = 421K et IsoTemp[0] =
400K : if(Val[X][Y] < IsoTemp[0] && Val[X][Y+1] >
IsoTemp[0])
Alors dans ce cas il faut enregistrer le point (2,2.5) dans Isotherme[0][i] : Isotherme[0][i].x = X; Isotherme[0][i].y = Y+0.5
J'ai mis 2.5 car l'isotherme passe entre le point 2,2 et 2,3. Il y a
extremement peu de chances que l'isotherme tombe sur un point mesuré.
Ca tombe bien, x et y sont des float, il n'y a donc pas de problème pour enregistrer 2,2.5
Ensuite, faire de même avec les points X-1,Y; X+1,Y; X,Y+1; X,Y-1.
Voilà, j'espère avoir pû t'aider.
Tekila48