#2011, Eulalie Sauthier, Master Thesis

IDW_ <- function(known_data, interpolating_data) {
	
#creer une matrice vide pour accueillir les nouvelles valeurs estimées
interpolated_data<-matrix(nrow=(length(interpolating_data[ ,1])),ncol=3)

somme_num<-numeric(1) #vecteurs temporaires
somme_den<-numeric(1)
somme<-numeric(1)

coef<-30 #pondération de l'altitude
j<-0

for( k in 1:3){  #pour chaque paramètres
	for (j in 1:length(interpolating_data[ ,1])){ #pour chaque station à vérifier
		somme_num<-numeric(1) #remise à zero
		somme_den<-numeric(1)
		somme<-numeric(1)
		
		for (i in 1:length(rownames(known_data))){ #calcule la distance pour l'interpolation
			distance<-sqrt((interpolating_data[j ,1]-known_data[ i,4])^2+(interpolating_data[j,2]-known_data[i ,5])^2 + (coef*coef)*(interpolating_data[j ,3]-known_data[i ,6])^2)	
			#calcule le numérateur et dénominateur de la fonction d'interpolation
			somme_num<-somme_num+(known_data[i,k]/distance) 
			somme_den<-somme_den+( (1/distance))
		}
		
		somme<-somme_num / somme_den #calcule l'interpolation
		interpolated_data[j,k]<-somme #sauve dans vecteur
	}
}
temp<-cbind(interpolated_data ,interpolating_data) #relie les valeurs interpolées et connues
retour<-rbind(known_data, temp) #retourne les interpolations
return(retour)	
			}