;+
; NAME:
;	TRV_GAUS
;
; PURPOSE:
; 	Cette procedure permet de localiser et de caracteriser une source
; 	gaussienne par la methode de la mi-hauteur
;
; CATEGORY:
;	RH_2D, recherche de positions
;
; CALLING SEQUENCE:
;	TRV_GAUS, T, Xmax, Ymax, Gauss, Seuil
;
; INPUTS:
; 	T:		tableau à deux dimensions contenant l'image
; 	Xmax, Ymax:	indices du maximum du tableau
; 	Seuil:		critere de recherche des 8 distances (mi-hauteur)
;
; OUTPUTS:
; 	Gauss:		structure qui recoit les parametres de la gaussienne
;
; MODIFICATION HISTORY:
; 	Written by:	C. Renié 12/1997
;-

PRO TRV_GAUS, t, xmax, ymax, gauss, seuil

	di = FLTARR(10)
	gra = FLTARR(8)
	grb = FLTARR(8)
	tet = FLTARR(8)
	points = INTARR(8,2)

; Procedure recherchant les distances centre/seuil dans 8 directions
	TRV_DIST, t, xmax, ymax, di, points, seuil
	di(8)=di(0)
	di(9)=di(1)
	badvalues = WHERE ( di EQ 0, count)
	
;	*******************************************************************
;	*************  determination des ellipses possibles
;	*******************************************************************
	IF count NE 10 THEN BEGIN
		DET_ELLIP,di,gra,grb,tet
	
;		FOR i=0,7 DO BEGIN
;			IF (gra(i) LT 0.0) THEN BEGIN
;				gra(i)=-1*gra(i)
;			ENDIF	
;
;			IF (grb(i) LT 0.0) THEN BEGIN
;				grb(i)=-1*grb(i)
;			ENDIF
;		ENDFOR

;			*******************************************
;			le critere de choix entre les ellipses est
;			celui de l'aire minimale. L'aire d'une ellipse
;			d'axe a et b est : pi*a*b
;			******************************************
		naire=0
		aire=1.E20
		FOR i=0,7 DO BEGIN
			IF ((gra(i)*grb(i)) GT 0.0) THEN BEGIN
				IF (aire GT (!PI*SQRT(1/(gra(i)*grb(i))))) THEN BEGIN
					aire=(!PI*SQRT(1/(gra(i)*grb(i))))
					naire=i
				ENDIF
			ENDIF
		ENDFOR
		
;		mise en place des parametres a retourner
		IF aire NE 1.E20 THEN BEGIN
			gauss.gra=gra(naire)
			gauss.grb=grb(naire)
			gauss.tet=tet(naire)
			gauss.xmax=xmax*1.0
			gauss.ymax=ymax*1.0
			gauss.max=t(xmax,ymax)
		ENDIF ELSE gauss.max = -1.0
	ENDIF ELSE gauss.max = -1.0
END
