#######################################################################################################################################
#                                                                                                                                     #
#         D I F F U S I O N   T R I D I M E N S I O N N E L L E   " D O U C E "                                                       #
#         ( C A L C U L   D ' I S O S U R F A C E S   D E   L A   D E N S I T E   D E   P A R T I C U L E S                           #
#         S T E R E O S C O P I Q U E S )  :                                                                                          #
#                                                                                                                                     #
#                                                                                                                                     #
#         Author of '$xiirk/.DIFZ.14.1.$U' :                                                                                          #
#                                                                                                                                     #
#                     Jean-Francois Colonna (LACTAMME, 20070706092707).                                                               #
#                                                                                                                                     #
#######################################################################################################################################

$Z                  setParam            _____Pas                      1
$Z                                      # Introduit le 20070706092707 (d'ou la modification 'v $xiirk/.DIFZ.13.1.$U unset'...).       #

$Z                  SETParam            _____Binariser                FAUX
$Z                                      # Introduit le 20070706092707 (d'ou la modification 'v $xiirk/.DIFZ.13.1.$U unset'...).       #

$Z                  set                 _____imagesTS=$xTV/STEREO

$c                  #include  <stdio.h>
$c                  #include  <math.h>
$c
$c                  #define   RAYONmin  Bande0
$c                  #define   RAYONmax  Nbandes
$c                  #define   dRAYON    -1
$c
$c                  #define   NIVEAU0   0
$c                  #define   NIVEAUn   255
$c
$c                  #define   N0        1
$c                  #define   N         16
$c
$c                  #define   d0        -0.008
$c                  #define   dN        +0.008
$c
$c                  #define   RAYON     (RAYONmax-rayon+RAYONmin)
$c
$c                  int       main()
$c                            {
$c                            double    rayon;
$c                            double    seuil_inferieur=NIVEAU0,seuil_superieur;
$c                            double    facteur;
$c
$c                            int       n=1;
$c
$c                            for       (rayon=RAYONmax ; rayon>=RAYONmin ; rayon=rayon+dRAYON)
$c                                      {
$c                                      double    dniveau=((-2*RAYON*exp(-(RAYON*RAYON)/(RAYONmax*RAYONmax)))*dRAYON);
$c                                      /* Les images '$_____imagesD' contiennent des exponentielles dont le niveau est donne        */
$c                                      /* par :                                                                                     */
$c                                      /*                                                                                           */
$c                                      /*                                  2                                                        */
$c                                      /*                            -rayon                                                         */
$c                                      /*                  niveau = e                                                               */
$c                                      /*                                                                                           */
$c                                      /* 'D' designant une differentielle, on a donc :                                             */
$c                                      /*                                                                                           */
$c                                      /*                                            2                                              */
$c                                      /*                                      -rayon                                               */
$c                                      /*                  Dniveau = -2.rayon.e       .Drayon                                       */
$c                                      /*                                                                                           */
$c                                      /* Ici, on calcule donc l'increment 'Dniveau' des niveaux pour un increment 'Drayon'         */
$c                                      /* constant et egal a 'dRAYON'. Ainsi, les iso-surfaces auront toutes "la meme epaisseur"... */
$c
$c                                      seuil_superieur=seuil_inferieur+dniveau;
$c                                      seuil_inferieur=seuil_inferieur+(dniveau/2);
$c                                      }
$c
$c                            facteur=(double)NIVEAUn/seuil_superieur;
$c                                      /* Facteur de renormalisation garantissant ("a epsilon pres") que 'seuil_inferieur'          */
$c                                      /* atteindra bien 'NIVEAUn' a la fin des iterations...                                       */
$c
$c                            seuil_inferieur=NIVEAU0;
$c
$c                            for       (rayon=RAYONmax ; rayon>=RAYONmin ; rayon=rayon+dRAYON)
$c                                      {
$c                                      int       k;
$c                                      double    dniveau=facteur*((-2*RAYON*exp(-(RAYON*RAYON)/(RAYONmax*RAYONmax)))*dRAYON);
$c
$c                                      seuil_superieur=seuil_inferieur+dniveau;
$c
$c                                      printf("echo %cimage=%04d : IsoSurface=%.2f%c\n"
$c                                            ,'"'
$c                                            ,n
$c                                            ,((seuil_inferieur+seuil_superieur)/2)*(1/(double)NIVEAUn)
$c                                            ,'"'
$c                                             );
$c                                      /* Edition d'une aide au legendage des images (introduit le 20070701111757).                 */
$c
$c                                      for       (k=N0 ; k<=N ; k++)
$c                                                {
$c                                                double    decalage_stereoscopique=((dN*(k-N0))+(d0*(N-k)))/(N-N0);
$c
$c                                                printf("$xci/accumule.02$X
$c                                                                            A=$_____imagesD.
$c                                                                            premiere=$_____Premiere derniere=$_____Derniere
$c                                                                            pas=$_____Pas
$c                                                                            binariser=$_____Binariser
$c                                                                            passe_bande=VRAI
$c                                                                            seuil_inferieur=%d seuil_superieur=%d
$c                                                                            seuil=$NOIR_PLANCHER
$c                                                                            trx=%f try=0
$c                                                                            R=$_____imagesTS.%04d
$c                                                                                                            $formatI\n"
$c                                                      ,(int)seuil_inferieur,(int)seuil_superieur
$c                                                      ,decalage_stereoscopique
$c                                                      ,k
$c                                                       );
$c                                      /* Calcul des iso-surfaces...                                                                */
$c                                                }
$c
$c                                      printf("$xci/reduction_16$X
$c                                                                  A=$_____imagesTS.
$c                                                                  premiere=%d derniere=%d pas=1
$c                                                                  moyenne=VRAI
$c                                                                  R=$_____imagesRS.%04d$R16
$c                                                                                                  $formatI\n"
$c                                            ,N0,N
$c                                            ,n
$c                                             );
$c                                      /* Calcul des iso-surfaces stereoscopiques...                                                */
$c
$c                                      seuil_inferieur=seuil_inferieur+(dniveau/2);
$c
$c                                      n++;
$c                                      }
$c                            }



Copyright © Jean-François Colonna, 2019-2021.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / Ecole Polytechnique, 2019-2021.