#######################################################################################################################################
# #
# D I F F U S I O N B I D I M E N S I O N N E L L E D Y N A M I Q U E #
# D O N T L A S O U R C E E S T T E L L E Q U E M E R I N I T A L E E S T C O N N E X E : #
# #
# #
# Author of '$xiirk/.DIFF.11.4.$U' : #
# #
# Jean-Francois Colonna (LACTAMME, 20140205180726). #
# #
#######################################################################################################################################
$Z @ DoUbLe_dimX = 2 * $dimX
$Z # Introduit le 20070216131711... #
$Z set X___MeRd=$_____X___Mer
$Z set Y___MeRd=$_____Y___Mer
$Z set X___MeR=`$xci/coordonnees$X normaliser=VRAI abscisse=VRAI ordonnee=FAUX X=$X___MeRd`
$Z set Y___MeR=`$xci/coordonnees$X normaliser=VRAI abscisse=FAUX ordonnee=VRAI Y=$Y___MeRd`
$Z set X_TeRrEd=$_____X_Terre
$Z set Y_TeRrEd=$_____Y_Terre
$Z set X_TeRrE=`$xci/coordonnees$X normaliser=VRAI abscisse=VRAI ordonnee=FAUX X=$X_TeRrEd`
$Z set Y_TeRrE=`$xci/coordonnees$X normaliser=VRAI abscisse=FAUX ordonnee=VRAI Y=$Y_TeRrEd`
$Z set N___MeR=$GRIS_0
$Z set N_TeRrE=$GRIS_8
$Z set N_CoNtOuR=$GRIS_4
$Z @ fXmIn = $Xmin
$Z @ fXmAx = $Xmax + 2
$Z @ fYmIn = $Ymin
$Z @ fYmAx = $Ymax + 2
$Z @ cXmIn = $fXmIn + 1
$Z @ cXmAx = $fXmAx - 1
$Z @ cYmIn = $fYmIn - 1
$Z @ cYmAx = $fYmAx + 2
$c #include <stdio.h>
$c
$c #define N0 _____Premiere
$c #define N _____Derniere
$c
$c int main()
$c {
$c int n;
$c
$c for (n=N0 ; n<=N ; n++)
$c {
$c printf("$xci/S_point$X
$c A=$DiFfUsIoN.%04d
$c X=$X___MeRd Y=$Y___MeRd
$c niveau=$N___MeR
$c R=$xTV/DIFFUSION.1
$c $formatI\n"
$c ,n
$c );
$c /* L'image intermediaire '$xTV/DIFFUSION.1' a ete introduite le 20070327165343 pour */
$c /* eviter un message du genre : */
$c /* */
$c /* Segmentation fault */
$c /* */
$c /* (alors qu'un "|" devrait suffire en theorie) lorsque le '$formatI' est du type 'Phu'... */
$c printf("$xci/contours.12$X
$c A=$xTV/DIFFUSION.1
$c seuil=$N_CoNtOuR
$c niveau=$N_TeRrE
$c X=$X___MeR Y=$Y___MeR
$c est=VRAI nord=VRAI ouest=VRAI sud=VRAI
$c nord___est=VRAI nord_ouest=VRAI sud_ouest=VRAI sud___est=VRAI
$c R=$xTV/PLEINE_MER.1
$c $formatI\n"
$c );
$c /* Extraction de la pleine mer (ce qui exclue donc les lacs...). */
$c /* */
$c /* ATTENTION : dans le cas ou la mer ne serait pas connexe (par exemple cas d'une source */
$c /* coupant en deux l'espace), l'operation precedente de remplissage de contours doit etre */
$c /* faite autant de fois qu'il y a de composantes ; ensuite '$xTV/PLEINE_MER.1' sera calculee */
$c /* comme l'union (par '$xci/or_02$X') de tous ces remplissages... */
$c /* */
$c /* ATTENTION : on notera que l'on force a 'N___MeR' le point {$X___MeRd,$Y___MeRd} pour ne */
$c /* "pieger" ensuite '$xci/contours.12$X'... */
$c printf("$xci/S_point$X
$c A=$DiFfUsIoN.%04d
$c X=$X_TeRrEd Y=$Y_TeRrEd
$c niveau=$N_TeRrE
$c $formatI |
$c $xci/complement$X
$c R=$xTV/DIFFUSION.2
$c $formatI\n"
$c ,n
$c );
$c /* L'image intermediaire '$xTV/DIFFUSION.2' a ete introduite le 20070327165343 pour */
$c /* eviter un message du genre : */
$c /* */
$c /* Segmentation fault */
$c /* */
$c /* (alors qu'un "|" devrait suffire en theorie) lorsque le '$formatI' est du type 'Phu'... */
$c printf("$xci/contours.12$X
$c A=$xTV/DIFFUSION.2
$c seuil=$N_CoNtOuR
$c niveau=$N_TeRrE
$c X=$X_TeRrE Y=$Y_TeRrE
$c est=VRAI nord=VRAI ouest=VRAI sud=VRAI
$c nord___est=FAUX nord_ouest=FAUX sud_ouest=FAUX sud___est=FAUX
$c R=$xTV/TERRE_FERME.1
$c $formatI\n"
$c );
$c /* Extraction de la terre ferme (ce qui exclue donc les iles, mais inclue des lacs...). */
$c /* */
$c /* ATTENTION : dans le cas ou la terre ne serait pas connexe, l'operation precedente de */
$c /* remplissage de contours doit etre faite autant de fois qu'il y a de composantes ; ensuite */
$c /* '$xTV/TERRE_FERME.1' sera calculee comme l'union (par '$xci/or_02$X') de tous ces */
$c /* remplissages... */
$c /* */
$c /* ATTENTION : on notera que l'on force a '$N_TeRrE' le point {$X_TeRrEd,$Y_TeRrEd} pour ne */
$c /* "pieger" ensuite '$xci/contours.12$X'... */
$c printf("$xci/eor$X
$c A1=$DiFfUsIoN.%04d
$c A2=$xTV/TERRE_FERME.1
$c R=$xTV/ILES.1
$c $formatI\n"
$c ,n
$c );
$c /* Extraction des iles seules... */
$c printf("$xci/complement$X
$c A=$DiFfUsIoN.%04d
$c $formatI |
$c $xci/eor$X
$c A1=$xTV/PLEINE_MER.1
$c R=$xTV/LACS.1
$c $formatI\n"
$c ,n
$c );
$c /* Extraction des lacs seuls... */
$c printf("$xci/or_02$X
$c A1=$xTV/TERRE_FERME.1
$c A2=$xTV/LACS.1
$c $formatI |
$c $xci/eor$X
$c A1=$xTV/ILES.1
$c $formatI |
$c $xci/complement$X
$c R=$xTV/TERRE_FERME_LACS_COMBLES.1
$c $formatI\n"
$c );
$c /* Extraction la terre ferme tous les lacs ayant ete bouches... */
$c printf("$xci/format.01$X
$c A=$xTV/TERRE_FERME_LACS_COMBLES.1
$c $formatI
$c mode=7
$c R=$xTV/TERRE_FERME_LACS_COMBLES_BORDUREE.1
$c XminR=$fXmIn XmaxR=$fXmAx YminR=$fYmIn YmaxR=$fYmAx\n"
$c );
$c printf("XYmaxNe $fXmAx $fYmAx\n");
$c printf("$xci/bordurage.11$X
$c A=$xTV/TERRE_FERME_LACS_COMBLES_BORDUREE.1
$c Xbg=$cXmIn Ybg=$cYmIn
$c Xhd=$cXmAx Yhd=$cYmAx
$c $formatI |
$c $xci/or_02$X
$c A1=$xTV/TERRE_FERME_LACS_COMBLES_BORDUREE.1
$c R=$xTV/TERRE_FERME_LACS_COMBLES_BORDUREE.2
$c $formatI\n"
$c );
$c /* Le "bordurage" est destine a etendre l'image '$xTV/TERRE_FERME_LACS_COMBLES_BORDUREE.1' */
$c /* sur son pourtour. Rappelons qu'elle est immergee dans un espace faisant un point de plus */
$c /* a droite, a gauche, en bas et en haut. Le "bordurage" remplit donc cet "entourage" (d'un */
$c /* point d'epaisseur) en fonction du bord de '$xTV/TERRE_FERME_LACS_COMBLES_BORDUREE.1' de */
$c /* telle sorte que les proprietes topologiques soient conservees en vue de l'extraction de */
$c /* contour qui va suivre... */
$c printf("$xci/contours.11$X
$c A=$xTV/TERRE_FERME_LACS_COMBLES_BORDUREE.2
$c seuil=$N_CoNtOuR
$c niveau=$N_TeRrE
$c X=$X_TeRrE Y=$Y_TeRrE
$c nombre_minimal_de_points=$DoUbLe_dimX
$c load_niveau_hors_image=$N_TeRrE
$c points_contour=FAUX
$c R=$xTV/PLAGE_BORDUREE
$c $formatI\n"
$c );
$c /* Extraction de la plage. On notera que l'exterieur du champ est declare comme appartenant */
$c /* a l'interieur du contour que l'on extrait ("load_niveau_hors_image=$N_TeRrE"). Cela fait */
$c /* que la plage va faire le tour de l'image par le bas, ce qui justifie le fait que la plage */
$c /* est extraite dans un domaine superieur d'un point (dans les 4 directions) au domaine */
$c /* 'Pal'. La partie de la plage situee en bas disparaitra lors du retour au format 'Pal'... */
$c /* */
$c /* Le 20070215131551 fut introduit "nombre_minimal_de_points=$dimX" a cause du probleme dit */
$c /* "des impasses" ('v $xiii/contours$FON 20070214153034'), la valeur '$dimX' venant du fait */
$c /* que la source est une ligne horizontale traversant l'image et qu'ainsi le contour (qui */
$c /* correspond a la plage) est necessairement plus "long" que '$dimX' (et meme que son double */
$c /* puisqu'il est ferme, d'ou le passage de '$dimX' a '$DoUbLe_dimX' le 20070216131711...). */
$c printf("$xci/format.01$X
$c A=$xTV/PLAGE_BORDUREE
$c $formatI
$c mode=7
$c R=$xTV/PLAGE.1
#20070320143756____:$c $formatR_Pal\n" #
$c $FoRmAtR\n"
$c );
#20070320143756____:$c printf("Pal\n"); #
$c printf("eval $_____FoRmAt\n");
$c printf("$xci/eor$X
$c A1=$xTV/TERRE_FERME.1
$c A2=$xTV/PLAGE.1
$c R=$xTV/TERRE_FERME_SANS_LA_PLAGE.1
$c $formatI\n"
$c );
$c /* Extraction de la terre ferme sans la plage... */
$c printf("$xci/acces$X
$c A=$xTV/PLAGE.1
$c renormaliser=VRAI rBLANC=$_____Plage
$c CAL1=FAUX
$c R=$xTV/PLAGE.2
$c $formatI\n"
$c );
$c /* Coloriage de la plage... */
$c printf("$xci/acces$X
$c A=$xTV/PLEINE_MER.1
$c renormaliser=VRAI rBLANC=$_____PleineMer
$c CAL1=FAUX
$c R=$xTV/PLEINE_MER.2
$c $formatI\n"
$c );
$c /* Coloriage de la pleine mer... */
$c printf("$xci/acces$X
$c A=$xTV/LACS.1
$c renormaliser=VRAI rBLANC=$_____Lacs
$c CAL1=FAUX
$c R=$xTV/LACS.2
$c $formatI\n"
$c );
$c /* Coloriage des lacs... */
$c printf("$xci/acces$X
$c A=$xTV/TERRE_FERME_SANS_LA_PLAGE.1
$c renormaliser=VRAI rBLANC=$_____TerreFerme
$c CAL1=FAUX
$c R=$xTV/TERRE_FERME_SANS_LA_PLAGE.2
$c $formatI\n"
$c );
$c /* Coloriage de la terre ferme... */
$c printf("$xci/acces$X
$c A=$xTV/ILES.1
$c renormaliser=VRAI rBLANC=$_____Iles
$c CAL1=FAUX
$c R=$xTV/ILES.2
$c $formatI\n"
$c );
$c /* Coloriage des iles... */
$c printf("$xci/or_02$X
$c A1=$xTV/PLAGE.2
$c A2=$xTV/TERRE_FERME_SANS_LA_PLAGE.2
$c $formatI |
$c $xci/or_02$X
$c A2=$xTV/ILES.2
$c $formatI |
$c $xci/or_02$X
$c A2=$xTV/PLEINE_MER.2
$c $formatI |
$c $xci/or_02$X
$c A2=$xTV/LACS.2
$c R=$_____images.%04d
$c $formatI\n"
$c ,n
$c );
$c /* Extraction la terre ferme tous les lacs ayant ete bouches. */
$c }
$c }